从详细视图返回后,表视图不再是 searchResultsTableView

发布于 2024-11-06 22:19:38 字数 797 浏览 0 评论 0原文

我正在使用基于本教程的 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。所以我所有的指数计算都会出错并且应用程序崩溃。

非常感谢任何帮助。

非常感谢,

I'm using a UISearchDisplayController based on this tutorial:
http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

I've a table view in navigation controller with that search controller. And as usual, you can search, click on the search result and go to detail view.

I'm using such code like the following to detect whether the current table view is searchResultsTableView.

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

My problem is when the user come back from detail view to the search result table view, that tableView becomes normal table view and not a searchResultsTableView anymore. But the table is still filtered and only show the search results. Just the tableView is no longer recognized as a searchResultsTableView. So all my index calculations go wrong and app crashes.

Any help is greatly appreciated.

Many thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木格 2024-11-13 22:19:38

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

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

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

One alternative way to solve this situation is set a flag whether your table is searchResultTableView or just normal tableView. For instance, when user did search in any chance, set your flag as true, and keep this value unless user click on cancel or any other way to finish search. Since you are using searchDisplayController, delegate method

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

will be called at the end of search, so you can change flag value to indicate normal table. Based on this flag value, you can put if statement in tableView delegate methods to set up table in a way you want to. However, when I attempt to check same situation as your case (search and click one of table cell and go back to previous table) in my app, tableView still hold as searchResultTableView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文