にフィルタボタンを追加します。私はすでにUIButton
とsearchbar
をUIView
に追加しようとしましたが、これを私のUITableView tableView.tableHeaderView
と設定しました。tableView.tableHeaderView
がコントローラを終了するときにだけに戻ってくるので、これは機能しません。ここでは、私はそれを見たいの例です:は私が<code>UISearchController</code>内<code>searchBar</code>の隣にある「フィルタ」または「並べ替え」ボタンを追加したいUISearchController
答えて
私は検索コントローラを失うだろう、それはあなたが提供する必要がある追加のビュー/ VC複雑さ/コードを追加する任意の機能を提供しません複製。それは、データ・ソースを持っているので
既存のテーブルビューはすでに、あなたが必要なすべてを持っています。それは配列かFRCのどちらかです。それは、アレイのなら、あなたはあなたのフィルタ処理内容で配列の内容を置き換えることができ、そしてそれはFRCだ場合は、述語を変更することができます。
注:アレイの場合に、最初に同じ配列への参照である2つの配列参照、すべてのフィルタリングされていないアイテムを保持する配列を指し1及び別の持っている - 第二の基準は、テーブルビューを移入するために使用されます。次に、フィルタリングするときに、フィルタされた項目だけを含む新しい配列を作成し、2番目の参照をその点でポイントします。
の代わりに使用すると、検索バーのデリゲートメソッドを実装し、フィルタリングをトリガーし、リセットするためにそれを使用して、検索コントローラのデリゲートメソッドを実装します。
は、今あなたが、テーブルビューを切り替えていないので、あなただけの1台のテレビと1つのヘッダビューを持っている検索コントローラー脱却しました。ヘッダービューを変更する必要はなく、すべてが機能します。
私が探しているものを理解しているわけではありません。私はテーブルビューをフィルタリングする方法を知りたいのではなく、フィルタを取得する方法を教えてください。検索バーのすぐ隣にあるボタン(検索コントローラでは理想的) – smnk
だからこそ、検索コントローラの紛失について尋ねました。あなたが持っている問題は、検索コントローラが別のビューを提示するため、ヘッダーが異なるように構成されていることです。他のビューに別のヘッダーを設定するだけで済みます。私は検索コントローラがほんのわずかな利益のために複雑さを加えていることがわかりました。ビューが1つだけの場合は、ヘッダーが1つあり、フォーカス管理も簡単です。 – Wain
私は検索バーをカスタマイズする方法の多くのを試してみましたが、何もフルフィル
let mysearchController = UISearchController(searchResultsController: nil)
mysearchController.searchBar.showsCancelButton = true
mysearchController.searchBar.barStyle = UIBarStyle.Black
for var subView1 in mysearchController.searchBar.subviews{
for var subView2 in subView1.subviews{
if subView2 .isKindOfClass(UIButton){
let customizedCancelButton:UIButton = subView2 as! UIButton
customizedCancelButton.enabled = true
customizedCancelButton.setTitle("", forState: UIControlState.Normal)
let image1 = UIImage(named: "Sort")
customizedCancelButton.setBackgroundImage(image1, forState: UIControlState.Normal)
customizedCancelButton.addTarget(self, action: "sort", forControlEvents: UIControlEvents.TouchUpInside)
}
}
}
コードの上、要件を理解する非常に簡単ですへの道を見つけた時、最後の私を助けてくれません。
func sort(){
print("sort button fired!!!")
}
代わりにUISearchBarをカスタマイズして、物事を複雑に、あなたは検索バーの横に、独自のボタンを追加することによって、それをシンプルに保つことができます。
設定しませんショーは
追加ショーは、ストーリーボードに検索バーのボタンオプションをキャンセル
self.searchBar.showsCancelButton = true
OR
チェックを外しを使用して検索バー用のボタンオプションをキャンセルあなたの自分のボタンb
そして、以下のようにesideの検索バーには、それに応じてボタンにIBactionを追加し、その中にあなたの行動を実行します。
はまた、理想的な場合には、テーブルビューのヘッダにこのビューを置くことが推奨ではありません。 テーブルビューよりも上にある方がAppleよりも優れている方が良いでしょう。
私は数行のコードで検索フィルタを作成することができます。私はそれが助けて欲しい
*ブックマークボタンを選択してフィルタアイコンを適用しました。私はすでにカスタムアクションのためにキャンセルボタンを使用しているからです。
最初に、ブックマークボタンのクリック操作を処理するsearchBarを委譲しました。 次に、以下のようにプロパティを設定する必要があります。カスタムポジションを与えたい場合(デフォルトポジションは右側)、setPositionAdjustmentを設定する必要があります。
searchController.searchBar.delegate = self
searchController.searchBar.showsBookmarkButton = true
searchController.searchBar.setImage(UIImage(named: "Sort.png"), for: .bookmark, state: .normal)
// MARK: You may change position of bookmark button.
//searchController.searchBar.setPositionAdjustment(UIOffset(horizontal: 0, vertical: 0), for: .bookmark)
次に、VC内のsearchBarBookmarkButtonClicked関数をオーバーライドします。このメソッド内でクリックイベントを処理できます。
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) { //showAlert, presentVC or whatever you want here }
あなたが検索コントローラがアクティブな状態でブックマークボタンを非表示にする場合も、あなたはupdateSearchResultsメソッド内の制御を適用する必要があります。
if searchController.isActive {
searchController.searchBar.showsBookmarkButton = false
} else {
searchController.searchBar.showsBookmarkButton = true
}
すばらしい解決策!ありがとう。 – Alessign
- 1. チェックボックスフィルタを追加した後、Filterrific検索と並べ替えフィルタは機能しなくなりました
- 2. あなたは私が私のCollectionViewSource</p> <p>内の単一アイテムをフィルタしたいCollectionViewSource
- 3. DataGridは別の列の並べ替えを追加します
- 4. Wpfフィルタと並べ替えを有効にしたリストビューのパフォーマンス
- 5. IEnumerable <FileInfo> testListを並べ替えるには?
- 6. Vue.js list orderByフィルタは動的に追加された項目を配列に並べ替えません
- 7. 価格で並べ替えを追加し、名前で並べ替え
- 8. 並べ替えリスト<T>内部リストのプロパティの数で
- 9. 動的に追加されたDjango QuerySetの並べ替え
- 10. NSSortDescriptorで並べ替える(今日または前)NSSortDescriptorで並べ替え
- 11. Laravel Datatables追加フィールドの並べ替え
- 12. ミックス(または並べ替え)JSアレイ
- 13. 並べ替えエラー:ハッシュマップ<String、List <String>>
- 14. どのように並べ替えまたは並べ替えをJavaランタイムの並べ替えを使用して(近接に基づいて)
- 15. 私はルートに追加した<code>WebApiConfig</code>で
- 16. テーブルビューのアイテムを動的に追加して並べ替える
- 17. WooCommerce Bookings:カート内のアイテムデータの追加と並べ替え
- 18. Odoo 10 - Javascriptを - リストビューボタンアクションは、私が<em>ListView.buttons</em>にボタンを追加しました</p> <p>Odoo 10を使用しています
- 19. Magento 1.9で新しい「並べ替え」を追加する
- 20. DB内での並べ替えとアプリケーションの並べ替え
- 21. Java:ArrayList <String>コンパイラを使用した並べ替え(ArrayListにはオブジェクトが格納されません)
- 22. のIntelliJいいえソースは</p> <p>このプロジェクト名は<strong>sparkexamples</strong>であると私は必要な依存関係に以下 <p></p>を追加しましたが、プロジェクトディレクトリである私はIntelliJのでMavenプロジェクトを作成し、Scalaのフレームワークのサポートを追加した
- 23. C++の選択並べ替えなし並べ替え並べ替えなし
- 24. 移動ボタンIを、私はブレンド2015</strong> VS <strong>ためのボタンを追加しましたWindowsの<strong>モバイルアプリケーション</strong>を開発し、ない<strong>ボタンページのために私のボタンにバインドする方法</strong>オプションに移動がありませんしています
- 25. Riakでデータを並べ替え/並べ替える方法は?
- 26. 値に基づいた並べ替え
- 27. 並べ替えリストビューを降順に並べ替えます。つまり、新しく追加された項目が最上部に表示されます。
- 28. JSテーブル検索/並べ替え/フィルタ
- 29. フィルタ、マップ、並べ替え、連結
- 30. NHibernate <Join>内<joined-subclass>内または代替
あなたが検索コントローラを使用している特別な理由があるのですか?それを使用せず、テーブルビューを直接フィルタリングすることはできますか? – Wain
理由は純粋に光学的です。だから私は何でもうまくいくだろう – smnk
私はより具体的にする必要があります、あなたはすでにテーブルビューを持って、それをフィルタリングするだけで幸せですか、検索結果を提示するために/検索コントローラのオーバーレイ機能が欲しいですか? – Wain