iOS、Swift 3 - 当我从详细信息视图返回后单击“取消”时,UISearchBar 消失
iOS, Swift 3 - UISearchBar disappears when I click on Cancel after returning from Detail View
我在 containerView 中有一个 tableView。以编程方式向其添加了一个搜索栏。一切正常,除了以下情况:当我点击一个单元格时,tableView 被 searchBar 过滤,然后我从 detailView(通过 push segue 呈现)中 return 然后我关闭 searchBar (取消按钮),然后 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
感谢您的帮助!
我遇到了同样的问题,我认为这是 iOS 问题,我通过为搜索结果设置 viewcontroller 来修复它:
let searchVC = mainStoryboard.instantiateViewController(withIdentifier: identifier) as! SearchResultViewController
let searchController = UISearchController(searchResultsController: searchVC)
searchController.searchResultsUpdater = searchVC
而且效果很好。
我在 containerView 中有一个 tableView。以编程方式向其添加了一个搜索栏。一切正常,除了以下情况:当我点击一个单元格时,tableView 被 searchBar 过滤,然后我从 detailView(通过 push segue 呈现)中 return 然后我关闭 searchBar (取消按钮),然后 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
感谢您的帮助!
我遇到了同样的问题,我认为这是 iOS 问题,我通过为搜索结果设置 viewcontroller 来修复它:
let searchVC = mainStoryboard.instantiateViewController(withIdentifier: identifier) as! SearchResultViewController
let searchController = UISearchController(searchResultsController: searchVC)
searchController.searchResultsUpdater = searchVC
而且效果很好。