关闭UISearchController的searchResultsUpdater,需要按两次

Wil*_* Hu 1 ios swift uisearchcontroller

按下以显示ViewController搜索功能时,我有一个搜索按钮。该视图控制器包含UITableViewUISearchController

一切正常,但在我选择搜索结果之一之后。我想直接关闭该视图控制器,但是首先选择取消取消,然后再次选择将关闭视图控制器。像下面一样,我只想一个选择解雇。谢谢!

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

编辑

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

小智 5

以下两个步骤可以满足您的需求:

首先,您需要在选择行后取消搜索,如下所示:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    searchController.active = false
}
Run Code Online (Sandbox Code Playgroud)

其次,您需要实现UISearchControllerDelegate的委托方法之一,以便在“取消”搜索时关闭视图控制器:

extension SearchViewController: UISearchControllerDelegate {

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