3

UISearchDisplayControllerユーザーが選択できるオプションの長いリストを表示するために使用されている があります。コントローラーが提供する検索バーを使用して、リストをフィルター処理します。

検索バーにテキストを入力しない限り、結果テーブルを表示できないことを除けば、すべて正常に機能します。検索バーにテキストがない場合でも、テーブルにすべての結果を表示したいと考えています。現時点では、テキストがない場合は、下にあるビューがぼやけているだけです。

これは可能ですか?または、まったく気にせずUISearchDisplayController、表示する別のテーブルビューに検索バーを配置して、スタックからポップする必要がありますか?

4

2 に答える 2

3

キーボードが表示されたときに空の searchBar を使用して検索結果を即座に表示するには、次のコードを ViewController に追加します。

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
  [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "];
}

ユーザーが何らかのテキストを入力してから searchBox をクリアしたときに、テーブルに結果を表示し続けるには、次を追加します。

-(void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView {
  [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "];    
}

searchDisplayController:shouldReloadTableForSearchString:で YES を返すことを忘れないでください。

于 2011-05-11T11:02:08.310 に答える
0

通常、すべてのコンテンツを 1 つの配列にロードすることから始めて、そこからテーブル ビューを「通常」として表示します。

これが機能したら、内部からの検索結果を含む 2 つ目の配列を作成します

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

次に、テーブル ビューのデリゲート/データ ソース メソッド内で、チェックして現在のコンテキストを決定します。

if (_tableView == self.searchDisplayController.searchResultsTableView)
于 2011-03-21T20:48:49.530 に答える