我的导航栏中有一个UISearchbar。当我搜索代表时:
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
NSLog(@"Should reload");
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return YES;
}
被调用所以它应该重新加载我的tableview。但事实并非如此。我的搜索数组中有两个结果,所以这不是问题。
我的UITableviewController中的init是这样的:
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
_searchBar.delegate = self;
_searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:_searchBar contentsController:self];
_searchDisplayController.delegate = self;
_searchDisplayController.searchResultsDataSource = self;
_searchDisplayController.searchResultsTableView.delegate = self;
在我分配init后,我的UITableviewController执行此操作:
_poiTableView = [[POITableViewController alloc] init];
self.navigationItem.titleView = _poiTableView.searchBar;
所以搜索栏在我的导航栏中,它调用searchdislaycontroller唯一的事情是它不会重新加载我的tableview。在我将搜索栏移动到导航栏之前,它位于tableview的标题单元格中。然后它重新加载了我的tableview。我只将搜索栏移到了导航栏。
答案 0 :(得分:2)
实施方法searchBarShouldEndEditing:
,然后使用[tableView reloadData];
此外,由于返回类型为BOOL,因此在方法结束时返回YES。否则,它将无法收到结束编辑委托电话。