我有一个包含所有国家及其旗帜的tableview。我一直在努力添加一个搜索栏,直到我决定将搜索栏移动到iOS7允许的导航栏中(为了我的目的,这种布局非常有效)。
现在,表格加载正常,搜索栏显示正常。当我输入搜索栏时,我可以看到通过控制台构建的过滤列表。一切看起来都不错,除了搜索结果表永远不会显示。换句话说,我没有在新的tableview中看到过滤后的列表。
正在调用此方法来构建筛选列表:
-(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;
}
我缺少什么?
答案 0 :(得分:1)
我遇到了同样的问题。如果我使用self.tableView.tableHeaderView = mySearchBar;
发现一些有趣的东西:source-tableview没有正确调整大小,所以它覆盖了result-tableview。
我的应用程序是通用的。如果我在iPad上运行它,源表视图完全被覆盖,所以我没有看到结果表视图。但在iPhone上看起来像这样:
答案 1 :(得分:1)
我遇到了与Morpheus相同的问题,这是因为我的viewDidLoad中有self.edgesForExtendedLayout = UIRectEdgeNone;