0

我有一个包含所有国家及其国旗的表格视图。我一直在努力添加一个搜索栏,并且一切正常,直到我决定将搜索栏移动到 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;

}

我错过了什么???

4

2 回答 2

1

我遇到了同样的问题。如果我将搜索栏添加到 tableHeaderView 一切正常self.tableView.tableHeaderView = mySearchBar;

发现了一些有趣的东西:源表视图没有正确调整大小,所以它覆盖了结果表视图。

我的应用程序是通用的。如果我在 iPad 上运行它,源表视图被完全覆盖,所以我看不到结果表视图。但在 iPhone 上它看起来像这样:

在此处输入图像描述

于 2013-11-26T22:41:49.747 回答
1

我遇到了与 Morpheus 相同的问题,这是由于self.edgesForExtendedLayout = UIRectEdgeNone; 我的 viewDidLoad

于 2014-05-20T22:49:51.087 回答