6

これは非常に苛立たしいことです。検索文字列が空の場合でも、フィルタリングされていない結果をUISearchDisplayControllerに表示しようとしています。

にデバッグコードを追加するnumberOfSectionsInTableView:numberOfRowsInSection:、検索文字列が空の場合、ゼロ以外の整数が返されますが、cellForRowAtIndexPath:呼び出されることはありません。テーブルビューが非表示になっているように見えます。

無駄に設定tableview.hidden=NO;してみました。searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView

これをやってのけるのはそれほど難しいことではありません、私はこれが非常に一般的なことだと思います!

4

3 に答える 3

4

これが古い投稿であることは知っていますが、新しいiOS8UISearchControllerでも同じ問題が発生しました。回避策は、文字列が空かどうかを確認し、結果のテーブルビューのプロパティを設定することです。HIDDEN = NO

于 2014-10-15T17:43:16.727 に答える
2

これに対する解決策は、UISearchDisplayControllerを使用しないことです。それは単にあなたがこのようなことをするのに必要な柔軟性を提供しません。UISegmentedControl、UISearchBar、UITableViewを使用して独自のカスタム検索インターフェースを構築し、最大限の柔軟性を実現します。

于 2012-08-23T23:25:28.237 に答える
2

ユーザーが検索をクリックして文字列が空になったら、searchBartextを「\n」のキャリッジリターンに変更します。

self.searchDisplayController.searchBar.text = @"\n";

キャリッジリターンは検索バーに表示されず、ユーザーが「\n」と入力した場合と同じ文字列にはなりません。だからそれはうまくいきます。の中に

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 

メソッドでは、検索バーのテキストを@""に戻すことができます。検索文字列が@"\n"の場合

self.searchDisplayController.searchBar.text = @"";

それが私のために働いたものです!

于 2014-01-25T00:29:32.533 に答える