0

我有一个UITabBarController包含相同UINavigationControllers + UITableViewControllers 的 4 个选项卡。每个都有一个UISearchBarUISearchDisplayController实现所有委托方法。首先,我单击任何选项卡,点击搜索栏,输入文本并按搜索。我在内部放置了一个日志,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 语句中的第二个标准允许控制器按照它应该的方式运行。我的问题是为什么tableViewnumberOfSectionsInTableView方法中不等于self.searchDisplayController.searchResultsTableView何时self.searchDisplayController处于活动状态?

4

0 回答 0