我已经查看了该问题的其他答案,但是它们并没有解决我的问题。
这是我的故事板设置:
在我的UITableViewController中,如果设置了self.definesPresentationContext = true
,则搜索栏将出现在每个选项卡上。如果我不这样做,那么在单击搜索后,该表将变为黑色,然后切换到另一个选项卡,然后再切换回去。
解决方法1:关闭searchController或在viewWillDisappear
中将isActive设置为false。
问题:每次我来回切换时,搜索栏都会从顶部向下推:
解决方法2:设置searchController.searchBar.isHidden = true
。
问题:在我的另一个也使用UISearchController
的选项卡中,由于已经存在另一个搜索栏(但隐藏了),因此无法显示范围:
Attempt to present <UISearchController: 0x7ff81ac0aa30> on <xxx.ViewController: 0x7ff81ac0a6f0> which is already presenting (null)
最佳答案
我遇到了同样的问题,并且已得到修复,可以正确正确地处理definesPresentationContext
,因此我只是在viewDidAppear
中将此属性定义为true,然后在false
中将其设置为viewWillDisappear
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if(self.searchController == nil)
{
self.setupSearchBar()
}else{
self.definesPresentationContext = true
}
}
override func viewWillDisappear(_ animated: Bool) {
self.searchController!.isActive = false
self.searchController!.searchBar.removeFromSuperview()
self.definesPresentationContext = false
if(self.showingSearchBar)
{
self.rigthNavBarButtonAction()
}
super.viewWillDisappear(animated)
}
我希望这可以帮助你
关于ios - UISearchController黑屏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44615506/