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

而且效果很好。