我在containerView中有一个tableView。以编程方式向其添加了searchBar。一切正常,除了这种情况:当我点击一个单元格,而tableView被searchBar过滤,然后我从detailView(通过push segue呈现)返回,然后我关闭searchBar(取消按钮) ,然后搜索栏消失。 神秘的是,当我在控制台上调试它时,searchBar对象仍然存在,它仍然是tableView的headerView ... 任何人都有一个想法,可能导致这个问题的原因,以及如何解决它?
以下是我的相关代码:
在viewDidLoad中:
self.searchController.searchResultsUpdater = self
self.searchController.delegate = self
self.searchController.dimsBackgroundDuringPresentation = false
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.definesPresentationContext = false
self.tableView.tableHeaderView = self.searchController.searchBar
searchControllerDelegate:
func willPresentSearchController(_ searchController: UISearchController) {
if let mpvc = self.parent as? MyPulleyViewController {
mpvc.navigationController?.navigationBar.isTranslucent = true
}
}
func willDismissSearchController(_ searchController: UISearchController) {
if let mpvc = self.parent as? MyPulleyViewController {
mpvc.navigationController?.navigationBar.isTranslucent = false
}
}
(myPulleyViewController是包含containerView的VC,self是containerView的VC)
在IB上,mpvc设置为Extend edges:Under Opaque Bars
感谢您的帮助!
答案 0 :(得分:1)
我遇到了同样的问题,我认为这是iOS问题,我通过为搜索结果制作viewcontroller来修复它:
let searchVC = mainStoryboard.instantiateViewController(withIdentifier: identifier) as! SearchResultViewController
let searchController = UISearchController(searchResultsController: searchVC)
searchController.searchResultsUpdater = searchVC
它工作正常。