UISearchController 使 UITableView 的内容变黑
Posted
技术标签:
【中文标题】UISearchController 使 UITableView 的内容变黑【英文标题】:UISearchController makes content of the UITableView black 【发布时间】:2016-08-29 06:10:39 【问题描述】:UISearchController 与 UITabBarController 结合使用时出现问题。我有 3 个标签。在每个选项卡中,我都有一个 UITableViewController 和一个来自 UISearchController 的搜索栏设置为表视图的标题视图,如下所示。
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = true
tableView.tableHeaderView = searchController.searchBar
tableView.contentOffset = CGPointMake(0, CGRectGetHeight(searchController.searchBar.frame))
如果我开始搜索并切换到另一个选项卡而不取消搜索,然后返回到上一个选项卡,则 UITableView 的内容变为黑色。我已经阅读了多个帖子,例如UISearchController makes the controller black 或UISearchController causes black screen Swift 2.0。但是这些解决方案对我不起作用。如果我在设置
definesPresentationContext = true
那么问题首先出现。如果我省略这一行,那么表格视图的内容不会变黑,但搜索栏在下一个选项卡上的搜索状态下保持激活状态。我也尝试将 searchResultsController 设置为另一个 UITableViewController 但它也没有解决问题。
【问题讨论】:
您是否尝试过在用户移动到另一个选项卡时以编程方式取消搜索? 【参考方案1】:我也遇到了同样的问题,只需在viewDidDisappear
中添加以下行即可解决
self.searchController.active = false
从上面的描述中可以清楚地看出,如果用户与通常你获取这个属性的值来判断是否显示搜索结果。但是,您可以将此属性设置为 true 以强制显示搜索界面,即使用户没有在搜索字段中点击。
此属性的默认值为 false。
searchController
交互,默认值是false
,它会切换为true。
在我们的例子中,只有当我们在UISearchController
处于活动状态时切换选项卡时才会出现问题。因此,我们需要在切换到其他 VC 时以编程方式简单地停用。
【讨论】:
我也将此解决方案用作解决方法。但它有两个缺点。首先,如果用户单击单元格然后返回,则搜索结果将被重置。其次,搜索栏停用的动画持续时间与切换标签不同。因此,如果切换选项卡,搜索栏仍会显示片刻。 如果您对UISearchBar
没有任何问题,那就去吧。不会造成这种问题。以上是关于UISearchController 使 UITableView 的内容变黑的主要内容,如果未能解决你的问题,请参考以下文章
UISearchController 使 UITableView 的内容变黑
如何使用 UISearchController 使导航栏保持可见?