すべての国とその国旗を含むテーブルビューがあります。私は検索バーを追加する作業を行ってきましたが、検索バーを iOS7 で許可されているナビゲーション バーに移動することを決定するまで、すべてが機能していました (私の目的では、そのレイアウトは非常にうまく機能します)。
これで、テーブルが正常に読み込まれ、検索バーが正常に表示されます。検索バーに入力すると、フィルタリングされたリストがコンソールを介して構築されていることがわかります。検索結果テーブルが表示されないことを除いて、すべて問題ないようです。つまり、フィルタされたリストが新しいテーブルビューに表示されません。
このメソッドは、フィルタリングされたリストを構築するために呼び出されています。
-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
しかし、標準的な方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
呼び出されることはありません。
先ほど言ったように、検索バーがナビゲーション バーにないときは問題なく動作しています。ViewDidLoad で次のデリゲートとプロパティを割り当てました。
searchDisplayController.delegate = self;
searchDisplayController.searchResultsDataSource = self;
searchDisplayController.searchResultsDelegate = self;
searchDisplayController.displaysSearchBarInNavigationBar = YES;
私も持っています:
#pragma mark - UISearchDisplayController Delegate Methods
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
// Tells the table data source to reload when text changes
[self filterContentForSearchText:searchString scope:
[[searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[searchDisplayController.searchBar selectedScopeButtonIndex]]];
// Return YES to cause the search result table view to be reloaded.
return YES;
}
私は何が欠けていますか???