【问题标题】:Show UISearchDisplayTableView when search string is empty [duplicate]当搜索字符串为空时显示 UISearchDisplayTableView [重复]
【发布时间】:2015-07-06 14:02:50
【问题描述】:

这非常令人沮丧:我试图在 UISearchDisplayController 中显示未经过滤的结果,即使搜索字符串为空。

将调试代码添加到numberOfSectionsInTableView:numberOfRowsInSection: 表明当我的搜索字符串为空时,将返回非零整数,但永远不会调用cellForRowAtIndexPath:!表格视图似乎被隐藏了。

我尝试在searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView 中设置tableview.hidden=NO; 无济于事。

这并不难实现,我想这是一件很常见的事情!

【问题讨论】:

    标签: ios uitableview uisearchdisplaycontroller


    【解决方案1】:

    我知道这是一篇旧帖子,但我在使用新的 iOS8 UISearchController 时遇到了同样的问题。解决方法是检查字符串是否为空,并设置结果tableview的属性HIDDEN = NO

    【讨论】:

    • 我也有同样的问题,但是我的结果tableview的属性hidden总是等于NO。
    【解决方案2】:

    这个问题的解决方案是不使用 UISearchDisplayController。它根本不提供执行此类操作所需的灵活性。使用 UISegmentedControl、UISearchBar 和 UITableView 构建您自己的自定义搜索界面,以获得最大的灵活性。

    【讨论】:

      【解决方案3】:

      您可以做的是当用户点击搜索并且字符串为空时,将 searchBartext 更改为“\n”回车

      self.searchDisplayController.searchBar.text = @"\n";
      

      回车不会显示在搜索栏中,也不会是相同的字符串,就像用户键入“\n”一样。所以它工作正常。 在

      -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
      

      方法您可以将搜索栏文本设置回@""。如果搜索字符串是 @"\n"

      self.searchDisplayController.searchBar.text = @"";
      

      这对我有用!

      【讨论】:

      • 每当我设置 self.searchDisplayController.searchBar.text = @"";在 shouldReloadTableForSearchString 中它不起作用。我想这样做是为了能够看到我的占位符文本。有什么想法吗?
      • 我一定是半睡半醒,因为它现在可以工作了。耶
      • 当您有" " 空文本时,占位符文本将被删除。 @DonnaLea,你能解释一下它是如何为你工作的吗
      • @Sategroup 抱歉,我已经有一段时间没有接触到我正在使用的代码库并且无法再访问它了。抱歉,我无法进一步说明。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多