解雇UISearchController的searchResultsUpdater需要按两次

时间:2016-03-17 06:06:41

标签: ios swift uisearchcontroller

按下时,我有一个搜索按钮,为搜索功能提供ViewController。此视图控制器包含UITableViewUISearchController

一切正常,但在我选择其中一个搜索结果后。我想直接关闭这个视图控制器,但是第一个选择取消取消然后再次选择将关闭视图控制器。如下所示,我只想选择一个解雇。谢谢!

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        searchViewController.searchBar.resignFirstResponder()
        self.dismissViewControllerAnimated(false, completion: nil)
    }

修改

let searchViewController = UISearchController(searchResultsController: nil)
func configureSearchController() {
        tableView.tableHeaderView     = searchViewController.searchBar
        searchViewController.delegate = self
        searchViewController.searchResultsUpdater = self
        self.definesPresentationContext = true
        searchViewController.dimsBackgroundDuringPresentation = false
    }

1 个答案:

答案 0 :(得分:4)

以下两个步骤应该是您正在寻找的技巧:

首先,您需要在选择如下一行时取消搜索:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    searchController.active = false
}

其次,你需要实现一个UISearchControllerDelegate的委托方法,以便在取消"取消"你的搜索结果:

extension SearchViewController: UISearchControllerDelegate {

func willDismissSearchController(searchController: UISearchController) {
    print("Will dimiss search controller")
    self.dismissViewControllerAnimated(true, completion: nil)
}
}