超出范围时,UISearchController没有正确解雇

时间:2015-05-14 22:26:04

标签: ios uitableview swift uisearchcontroller

我将搜索功能构建到我的应用程序中,该应用程序主要包含UITableViews。我已经成功添加了一个搜索栏,可以正确搜索项目,但是当我设置controller.dimsBackgroundDuringPresentation = false时,事情变得奇怪了。问题是,我确实希望这个布尔值为假,因为用户应该能够滚动搜索结果并选择结果以查看更多细节。

我看到的行为如下:搜索栏永远不会自我解除,除非您按下Cancel按钮,这意味着当我在表格视图中选择一个单元格以显示详细信息时那个单元格,搜索栏继续进入该视图,如下: EventDetailWithSearchBar

我按如下方式初始化我的搜索控制器:

 self.searchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.hidesNavigationBarDuringPresentation = false
        controller.searchBar.searchBarStyle = .Minimal
        controller.delegate = self

        self.tableView?.tableHeaderView = controller.searchBar
        return controller;
    })()

虽然搜索本身有效(updateSearchResultsForSearchController被调用,我应用我的搜索并返回一个数组等),我似乎无法以任何方式使用搜索,因为如果我选择了搜索时,上面的图片会发生,但如果我按下取消,则我的搜索会被清除。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该在viewDidLoad()

中添加以下行
definesPresentationContext = true

有关详细信息,请参阅文档:definesPresentationContext