我有一个UITabBarController
包含相同UINavigationController
s + UITableViewController
s 的 4 个选项卡。每个都有一个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
处于活动状态?