iOS,Swift 3 - 从详细信息视图返回后单击“取消”时,UISearchBar消失

时间:2017-08-07 15:24:35

标签: ios swift uitableview xcode8 uisearchbar

我在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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我认为这是iOS问题,我通过为搜索结果制作viewcontroller来修复它:

   let searchVC = mainStoryboard.instantiateViewController(withIdentifier: identifier) as! SearchResultViewController
    let searchController = UISearchController(searchResultsController: searchVC)
    searchController.searchResultsUpdater = searchVC

它工作正常。