返回tab后,tableView不等于searchResultsTableView

时间:2013-06-07 01:15:03

标签: ios uitableview uisearchdisplaycontroller

我有一个UITabBarController,其中有4个标签,其中包含相同的UINavigationController s + UITableViewController s。每个人都有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语句中的第二个条件允许控制器以它应该的方式运行。我的问题是,当tableView处于有效状态时,numberOfSectionsInTableView方法中self.searchDisplayController.searchResultsTableViewself.searchDisplayController不等的原因是什么?

0 个答案:

没有答案