Ios UISearchController使UITableView的内容变为黑色
我对UISearchController与UITabBarController的组合有问题。我有三个标签。在每个选项卡中,我都有一个UITableViewController,其中UISearchController的搜索栏设置为表视图的标题视图,如下所示Ios UISearchController使UITableView的内容变为黑色,ios,swift,uitableview,uisearchbar,uisearchcontroller,Ios,Swift,Uitableview,Uisearchbar,Uisearchcontroller,我对UISearchController与UITabBarController的组合有问题。我有三个标签。在每个选项卡中,我都有一个UITableViewController,其中UISearchController的搜索栏设置为表视图的标题视图,如下所示 searchController = UISearchController(searchResultsController: nil) searchController.searchResultsUpdater = self searchCo
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的内容将变为黑色。我读过多篇帖子,如或。但这些解决方案对我不起作用。如果我正在设置
definesPresentationContext = true
然后问题首先出现。如果我省略了这一行,那么表视图的内容不会变为黑色,但在下一个选项卡上,搜索栏在搜索状态下保持激活状态。我还尝试将searchResultsController设置为另一个UITableViewController,但这也不能解决问题。我也遇到了同样的问题,只需在
视图中添加以下行即可解决该问题。
self.searchController.active = false
通常,获取此属性的值以确定是否显示搜索结果。但是,您可以将此属性设置为true,以强制显示搜索界面,即使用户尚未点击搜索字段
此属性的默认值为false
- 从上面的描述中可以清楚地看出,如果用户与
交互,则默认值为searchController
false
- 在我们的例子中,只有当
处于活动状态时,切换选项卡时才会出现问题。因此,切换到其他VC时,我们只需通过编程方式停用选项卡UISearchController
视图中添加以下行即可解决
self.searchController.active = false
通常,获取此属性的值以确定是否显示搜索结果。但是,您可以将此属性设置为true,以强制显示搜索界面,即使用户尚未点击搜索字段
此属性的默认值为false
- 从上面的描述中可以清楚地看出,如果用户与
searchController
交互,则默认值为false
- 在我们的例子中,只有当
UISearchController
处于活动状态时,切换选项卡时才会出现问题。因此,切换到其他VC时,我们只需通过编程方式停用选项卡
当用户移动到另一个选项卡时,您是否尝试过以编程方式取消搜索?当用户移动到另一个选项卡时,您是否尝试过以编程方式取消搜索?我也将此解决方案用作解决方法。但它有两个缺点。首先,如果用户单击单元格然后返回,搜索结果将重置。其次,禁用搜索栏的动画持续时间不同于切换选项卡。因此,如果切换了tab,搜索栏仍会显示一段时间。如果您对UISearchBar
没有问题,请使用它。它不会导致这种问题。我也将此解决方案用作解决方法。但它有两个缺点。首先,如果用户单击单元格然后返回,搜索结果将重置。其次,禁用搜索栏的动画持续时间不同于切换选项卡。因此,如果切换了tab,搜索栏仍会显示一段时间。如果您对UISearchBar
没有问题,请使用它。它不会引起这种问题。