我正在使用基于本教程的UISearchDisplayController: http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html
我在导航控制器中有一个带有该搜索控制器的表格视图。和往常一样,您可以搜索,点击搜索结果并转到详细视图。
我正在使用如下代码来检测当前表视图是否为searchResultsTableView。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if(tableView == self.searchDisplayController.searchResultsTableView)
return 1;
else
return [self.arrCharacters count];
}
我的问题是当用户从详细视图返回到搜索结果表视图时,该tableView变为普通表视图而不再是searchResultsTableView。但该表仍然被过滤,只显示搜索结果。只是tableView不再被识别为searchResultsTableView。所以我的所有索引计算都出错了,应用程序崩溃了。
非常感谢任何帮助。
非常感谢,
答案 0 :(得分:0)
解决这种情况的另一种方法是设置一个标志,无论你的表是searchResultTableView还是普通的tableView。例如,当用户搜索任何机会时,将您的标志设置为true,并保留此值,除非用户单击取消或以任何其他方式完成搜索。由于您使用的是searchDisplayController,因此委托方法
-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
将在搜索结束时调用,因此您可以更改标志值以指示正常表。基于此标志值,您可以在tableView委托方法中放置if语句,以便以您希望的方式设置表。但是,当我尝试在我的应用程序中检查与您的情况相同的情况(搜索并单击表格单元格之一并返回上一个表格)时,tableView仍然保持为searchResultTableView。