我有一个UISearchDisplayController,可以在Interface Builder中正确连接。
delegate = Files Owner
searchBar = Search Bar
searchContentsController = Files Owner
searchResultsDataSource = Files Owner
searchResultsDelegate = Files Owner
当我的UITableView调用numberoOfRowsInSection:
时,返回正确的数字。
但是,我cellForRowAtIndexPath:
中的单元格甚至无法到达:
- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tblView == searchController.searchResultsTableView){
NSLog(@"search will go here");
UITableViewCell* cell = [self provideSearchQueryCells:tblView identifer:@"searchQueryCell"];
STSymbol *aSymbol = [self.searchQueryResults objectAtIndex:indexPath.row];
cell.textLabel.text = aSymbol.symbol;
cell.detailTextLabel.text = aSymbol.symbol_title;
return cell;
}
else { ... }
它总是进入其他条件。
我不确定为什么。
答案 0 :(得分:1)
我需要创建一个UISearchDisplayController的实例,而不是使用self.searchDisplayController。
答案 1 :(得分:1)
使用以下内容。它应该工作。
if ([tblView isEqual:[searchController searchResultsTableView]]) {
...
}
您还应该确保搜索结果行计数正确,如:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([tblView isEqual:[searchController searchResultsTableView]]) {
return [self.searchResults count];
}
...
}
答案 2 :(得分:0)
这是对这段代码的猜测,但我们是否正在研究搜索显示控制器本身?也许您的self.searchDisplayController.searchResultsTableView
应该只是self.searchResultsTableView
。
如果不了解你的代表,我无法确定。