当 UISearchController 处于活动状态并选择新选项卡时,UITableView 消失
Posted
技术标签:
【中文标题】当 UISearchController 处于活动状态并选择新选项卡时,UITableView 消失【英文标题】:UITableView disappears when UISearchController is active and a new tab is selected 【发布时间】:2014-07-30 09:07:11 【问题描述】:对不起,如果标题不是那么清楚,总结起来很棘手。
使用 Xcode 6 Beta 4,目标 ios 8:
我有一个 UITabBarController,它的控制器之一是 UITableViewController (TVC)。这个 TVC 有一个 searchController 属性,它是替换 UISearchDisplayController 的新 UISearchController。像这样初始化它(我只是将它添加到我的故事板中,但右下角对象库中的 searchController 仍然是 UISearchDisplayController - 我应该为此归档雷达吗?):
self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchResultsUpdater = self;
self.searchController.delegate = self;
self.searchController.searchBar.frame = CGRectMake(0, 0, 320, 44);
self.tableView.tableHeaderView = self.searchController.searchBar;
言归正传,如果 searchBar 是第一响应者:
然后在tabBar上又选择了一个tab,然后你又回来了:
我不知道为什么会这样? UISearchController 错误?还是文档没有告诉我应该做的事情(目前缺乏细节)。
【问题讨论】:
尝试升级到 Xcode beta 5,看看问题是否仍然存在。 在 beta 5 中尝试过,问题仍然存在。我有一些想法,现在我将添加到问题中。 【参考方案1】:感谢this sample project I found on GitHub,我的UISearchController
在 Xcode 6 beta-5 上运行没有问题。
在应得的地方给予赞扬,我认为 dempseyatgithub 做得非常出色,让每个人都可以将其用作参考项目。谢谢!
【讨论】:
太棒了,谢谢!这向我揭示了这个问题。我必须在我的 UITableViewController 中指定self.definesPresentationContext = YES;
。虽然我还没有尝试过,但我认为这也将允许我在 UISearchController 的 init 方法中指定 nil (文档说“将其设置为 nil 以在您正在搜索的同一视图中显示搜索结果”对于 @ 987654324@) 这样我就可以使用我正在搜索的 UITableViewController 作为结果 TableView。
干得好,谢谢!如果你在一个 UINavigationController 和一个通用的 UIViewController(里面有一个 tableView),你应该设置self.navigationController!.definesPresentationContext = true
。如果您直接在 UIViewController 上设置属性,它将无法正常工作。【参考方案2】:
看看这个人,我把这个属性(definesPresentationContext)设置为true,它就解决了。
【讨论】:
以上是关于当 UISearchController 处于活动状态并选择新选项卡时,UITableView 消失的主要内容,如果未能解决你的问题,请参考以下文章
当 UISearchController 处于活动状态并选择新选项卡时,UITableView 消失
当 UISearchController 处于活动状态时,iOS 9 searchBar 从表头视图中消失
在 UISearchController 处于活动状态时选择 tableview 中的单元格,不显示下一个视图?
UISearchController 不会停留在表头视图的顶部
带有大标题的 UISearchController 在选项卡栏中崩溃,“只有一个带有顶部边界的调色板可以在过渡之外处于活动状态”