UISearchController在点击取消按钮时解除VC

boi*_*kan 8 uitableview uisearchbar ios swift uisearchcontroller

所以,我目前正在尝试用UISearchController替换我的一个项目中的depricated searchDisplayController,我遇到了这个问题.

如果搜索中没有结果(UITableView为空),则整个ViewController被解除.当搜索结果不为空时,不会发生这种情况.我不想说清楚我没有使用UITableViewController.相反,我有一个带有UITableView的常规VC.

这是我的一些代码:

var resultSearchController = UISearchController()
override func viewDidLoad() {
    super.viewDidLoad()
    self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.delegate = self
        controller.searchBar.delegate = self
        self.studentTable.tableHeaderView = controller.searchBar
        return controller
    })()
    ....
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我将此函数添加到等式中,则取消按钮始终会取消VC.

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
    resultSearchController.active = false
}
Run Code Online (Sandbox Code Playgroud)

那么为什么要设置searchController.active = false解雇VC呢?是因为它使用与VC相同的UITableView吗?我相信旧的searchDisplayController只会显示一个正在使用的UITableView.如果是这种情况有没有办法覆盖dismissVC?

Her*_*ber 4

这也发生在我身上。我解决这个问题的方法是替换:

   resultSearchController.active = false
Run Code Online (Sandbox Code Playgroud)

    resultSearchController.searchBar.text = ""
    resultSearchController.searchBar.resignFirstResponder()
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你 :-)