objective-c - 从详细 View 返回后, TableView 不再是 searchResultsTableView

标签 objective-c ios uitableview ios4 uisearchdisplaycontroller

我正在使用基于本教程的 UISearchDisplayController: http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

我在带有该搜索 Controller 的导航 Controller 中有一个 TableView 。和往常一样,您可以搜索,点击搜索结果并转到详细 View 。

我正在使用如下代码来检测当前 TableView 是否为 searchResultsTableView。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if(tableView == self.searchDisplayController.searchResultsTableView)
        return 1;
    else
        return [self.arrCharacters count];
}

我的问题是,当用户从详细信息 View 返回到搜索结果 TableView 时,该 tableView 变成了普通 TableView ,不再是 searchResultsTableView。但是该表仍然被过滤并且只显示搜索结果。只是 tableView 不再被识别为 searchResultsTableView。所以我所有的索引计算都出错了,应用程序崩溃了。

非常感谢任何帮助。

非常感谢,

最佳答案

解决这种情况的另一种方法是设置一个标志,无论您的表是 searchResultTableView 还是普通的 tableView。例如,当用户有任何机会进行搜索时,将您的标志设置为 true,并保留此值,除非用户单击取消或任何其他方式来完成搜索。由于您正在使用 searchDisplayController,委托(delegate)方法

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

将在搜索结束时调用,因此您可以更改标志值以指示正常表。基于此标志值,您可以将 if 语句放在 tableView 委托(delegate)方法中,以您想要的方式设置表。但是,当我尝试在我的应用程序中检查与您的情况相同的情况(搜索并单击一个表格单元格并返回到上一个表格)时,tableView 仍然保持为 searchResultTableView。

关于objective-c - 从详细 View 返回后, TableView 不再是 searchResultsTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995626/

相关文章:

ios - block block block ,用 __weak self

ios - 将对象附加到变量

iphone - 如何使用 iphone SDK 中的两个按钮在运行时更改应用程序语言?

ios - 使用 UIApplicationDidEnterForeground 快速更新 tableview

iphone - 单元格未出现在表格 View 中

iphone - 调用 Superview 的 UILongPressGestureRecognizer 而不是 Subview

iphone - iOS 6.0 上的 MFMessageComposeController 中 UIButton 为 nil

ios - Mapkit选择所有注释

ios - 带有 UICollectionView 的 UITableViewCells 低性能(Swift)

objective-c - 如何自定义 NSSlider