在UINavigationController逻辑中的searchDisplayController.searchResultsTableView的行为

时间:2010-01-06 22:47:55

标签: iphone objective-c uitableview uinavigationcontroller

我在UINavigationController中有一个普通的UITableViewController。前者包括连接到搜索显示控制器的搜索栏。我使用标准行为,即当用户输入任何字符时,搜索结果表视图覆盖正常表视图。

现在,两个表视图都在导航控制器中起作用。如果我从搜索结果表视图中选择一个项目,则会将新的uitableviewcontroller(包含所选项目的特定信息)推送到导航堆栈。当我点击该控制器上的后退按钮时,我发现了一个奇怪的行为:普通表视图的节标题覆盖了我的搜索结果表视图的节标题。它们显示为正在显示我的正常表视图(我可以从标题之间的行数看到,尽管行保持为空)。搜索结果表行仍在显示。

此行为来自于我在viewWillAppear上重新加载表视图的事实。我这样做是为了对用户在应用程序中的某个其他位置或自动后台数据更新中对数据库所做的更改做出反应。我已经尝试轮询是否通过

显示最近显示的表格视图
(self.tableView == self.searchDisplayController.searchResultsTableView)

但是在返回普通的表视图控制器后,该语句总是为假。

问题:如何轮询表视图的正确状态以避免显示错误?

1 个答案:

答案 0 :(得分:11)

UISearchDisplayController类实现active属性。猜猜它用于什么: - )

e.g。只需检查(self.searchDisplayController.active)([self.searchDisplayController isActive])