【问题标题】:How can I determine if a UISearchDisplayController's searchResultsTableView is visible?如何确定 UISearchDisplayController 的 searchResultsTableView 是否可见?
【发布时间】:2011-08-11 23:46:47
【问题描述】:

我的 UITableView 的 headerview 中有一个 UISearchDisplayController。我想知道 UISearchDisplayController 的 searchResultsTableView 何时显示,以便我可以做一些其他操作:

if(self.tableView == self.searchDisplayController.searchResultsTableView)

即使显示 searchResultsTableView 也始终返回 true。我该如何解决这个问题?

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitableview uisearchdisplaycontroller


    【解决方案1】:

    这应该可以解决问题。

    [self.searchDisplayController isActive]
    

    【讨论】:

    • [self.searchDisplayController isActive] 不会告诉您是否显示searchResultsTableView。它告诉您搜索已被激活(例如,搜索栏是第一响应者),但如果您删除搜索栏中的任何现有文本(但继续保持搜索模式),searchResultsTableView 将被隐藏,但isActive 继续返回 YES。
    • @junjie 你是不是建议searchResultsTableView.hidden == NO 更正确?
    • @chaiguy 除了searchDisplayController.isActive,我还会检查searchDisplayController.searchBar.text.length。为什么不searchDisplayController.searchResultsTableView.hidden == NO?我不记得它是否有效,但另一个原因是访问器searchResultsTableView 不必要地初始化了表格视图,即使用户未处于搜索模式。
    【解决方案2】:

    使用 UISearchDisplayController 的委托方法怎么样?

    searchDisplayController:willShowSearchResultsTableView:
    searchDisplayController:didShowSearchResultsTableView:
    searchDisplayController:willHideSearchResultsTableView:
    searchDisplayController:didHideSearchResultsTableView:
    

    这些对你不起作用的任何原因?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多