UISearchDisplayController:显示所有结果而不输入文本?

时间:2010-03-23 22:54:59

标签: search tableview uisearchdisplaycontroller

我有UISearchDisplayController用于显示一长串供用户选择的选项。我使用控制器提供的搜索栏过滤列表。

一切正常,除了在搜索栏中输入文字之外我无法显示结果表。我想让表格显示我的所有结果,即使搜索栏中没有文字也是如此。目前,当没有文字时,我只是有一个暗淡的底层视图。

这可能吗?或者我应该不打扰UISearchDisplayController,只是在我显示的另一个tableview中有一个搜索栏,然后将其从堆栈中弹出?

2 个答案:

答案 0 :(得分: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中返回YES:shouldReloadTableForSearchString:

答案 1 :(得分:0)

通常,您可以首先将所有内容加载到一个数组中,然后将表格视图显示为“正常”。

一旦这样做,创建一个包含

内搜索结果的第二个数组
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

然后,在表视图的委托/数据源方法中,通过检查确定您所在的上下文

if (_tableView == self.searchDisplayController.searchResultsTableView)