UISearchController不会解除iOS 8 Swift的搜索栏和重叠

Tua*_* Vu 11 ios swift uisearchcontroller

我遇到了UISearchController的问题,如果我在搜索栏中有文本并关闭它所在的VC,则searchBar不会消失,只是保持在屏幕上与其他VC中的所有内容重叠.如果你点击取消按钮它会崩溃.

在SO上尝试了一些解决方案,但没有一个有效.:/

self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.hidesNavigationBarDuringPresentation = false
        controller.searchBar.sizeToFit()

        controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal
        controller.searchBar.barTintColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)
        controller.searchBar.tintColor = UIColor.blackColor()

        controller.definesPresentationContext = true
        controller.edgesForExtendedLayout = UIRectEdge.None
        self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0)

        self.tableView.tableHeaderView = controller.searchBar

        return controller
    })()
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助!

更新:所以我找到了一个不太好的解决方案,即在viewWillDisappear中设置.active = false.但问题是,在完全消失之前,searchBar工件将在下一个/上一个VC上显示一秒钟.

chr*_*ris 18

更改以下内容:

controller.definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)

self.definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)

当您在导航堆栈上打开和弹出视图控制器时,该设置还会保留搜索栏的状态.

您可以在UIViewControllerdefinesPresentationContext上阅读有关Apple文档的设置.