在UISearch显示控制器上预加载结果

时间:2014-02-02 16:11:04

标签: ios objective-c ios7 uisearchbar uisearchbardisplaycontrol

我需要实现搜索历史记录。所以我想要做的是在没有输入文本的情况下在搜索显示控制器中显示历史记录。

我实现了这个:

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller{
    self.searchDisplayController.searchResultsTableView.hidden=NO;
}

还有这个:

- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView{
  self.searchDisplayController.searchResultsTableView.hidden=NO;
}

使表格始终显示。

我还实现了行数来区分案例:(我也照顾cellForIndexpath,但不需要在这里显示)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if ([self.searchDisplayController.searchBar.text isEqualToString:@""]) {
    NSArray* d=[DropsAppDelegate getSharedInstance].userData.getLastSearches;
    return d.count;
}
return [searchResultPlaces count];
}

但这会弄得一团糟。该表格显示在半透明屏幕后面,并在退出搜索时变为可见。 the history results

当我实际输入内容时,屏幕也不会脱落。 我该怎么做才能使UITableView始终显示出来? 我查看了所有答案,但对iOS7没有任何效果。

1 个答案:

答案 0 :(得分:2)

好像你正在战斗UISearchDisplayController,这在iOS7上总是有些讨厌,而且更是如此。

我的建议是不要使用它,而是使用搜索栏实现您需要的功能。这真的不是那么困难,你得到代表回调你需要的一切,而你不与技术对抗。 UISearchBarDelegate讲述了整个故事。