13

私は私のUITableViewのヘッダービューにあるUISearchDisplayControllerを持っています。私はUISearchDisplayControllerのsearchResultsTableViewがそのように私はいくつかの他の操作を行うことができます表示されたときに知りたい:UISearchDisplayControllerのsearchResultsTableViewが表示されているかどうかを確認するにはどうすればよいですか?

if(self.tableView == self.searchDisplayController.searchResultsTableView) 

trueを返しsearchResultsTableViewが示されても、すべての時間を。私はこれをどのように把握できますか?

答えて

35

これはトリックを行う必要があります。

[self.searchDisplayController isActive] 
+1

'[self.searchDisplayController isActive]'は、 'searchResultsTableView'が表示されているかどうかを知らせません。検索バーが最初のレスポンダであることを示しますが、検索バーの既存のテキストを削除しても(検索モードのままです)、 'searchResultsTableView'は非表示になりますが、' isActive'が続きますYESを返します。 – junjie

+0

@junjie 'searchResultsTableView.hidden == NO'がもっと正しいとお考えですか? – devios1

+2

@chaiguy 'searchDisplayController.isActive'に加えて、' searchDisplayController.searchBar.text.length'をチェックします。どうして 'searchDisplayController.searchResultsTableView.hidden == NO'?私はそれがうまくいくかどうか覚えていませんが、他の理由は、ユーザが検索モードでないときでも、アクセサの 'searchResultsTableView'が不必要にテーブルビューを初期化するからです。 – junjie

3

UISearchDisplayControllerのデリゲートメソッドの使用はどうですか?

searchDisplayController:willShowSearchResultsTableView: 
searchDisplayController:didShowSearchResultsTableView: 
searchDisplayController:willHideSearchResultsTableView: 
searchDisplayController:didHideSearchResultsTableView: 

これらの理由はあなたのためにはうまくいかないでしょうか?

関連する問題