我有一个UITabBarController
,其中有4个标签,其中包含相同的UINavigationController
s + UITableViewController
s。每个人都有UISearchBar
和UISearchDisplayController
并实现所有委托方法。首先,我单击任何选项卡,点击搜索栏,输入文本并按搜索。我在numberOfSectionsInTableView
中放置了一个日志,以查看视图控制器如何识别最前面的表视图(现在我只返回零结果)。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSLog(@"Search Controller is the current table view");
return 0;
} else
NSLog(@"Search Controller is not the current table view");
return self.itemSections.count;
}
这次第一个语句打印在控制台中。
然后我(不解除搜索控制器)更改选项卡,然后立即返回第一个选项卡(使用搜索控制器)。搜索控制器仍然是最前面的视图,但第二个日志语句是打印而不是另一个。
如果我改变:
if (tableView == self.searchDisplayController.searchResultsTableView)
为:
if (tableView == self.searchDisplayController.searchResultsTableView || self.searchDisplayController.isActive)
然后新if语句中的第二个条件允许控制器以它应该的方式运行。我的问题是,当tableView
处于有效状态时,numberOfSectionsInTableView
方法中self.searchDisplayController.searchResultsTableView
与self.searchDisplayController
不等的原因是什么?