在我的代码中,这就是我设置UISearchController的方式:

searchResultController = storyboard!.instantiateViewControllerWithIdentifier(DBSearchResultControllerIdentifier) as! DBSearchResultController

searchController = UISearchController(searchResultsController: searchResultController)

searchController.searchResultsUpdater = self
searchController.delegate = self

searchResultController.tableView.tableHeaderView = searchController.searchBar

在某些操作上,我要做的是:
@IBAction func cityButtonTapped(sender: UIButton) {
    searchController.active = true
}

但是然后我有一个错误:

最佳答案

Apple文档UISearchController明确说明了以下内容:

  • active属性设置为YES会默认显示
    搜索 Controller 。
  • searchResultsController参数设置为nil以显示
    在与您搜索的 View 相同的 View 中搜索结果。

  • 因此,看起来您正在使用当前 View Controller 本身作为searchResultsController,因此,当您尝试将active设置为YES时,它将尝试以模态形式显示当前 View 本身,从而导致错误。

    关于ios - 激活UISearchController时出错 "Application tried to present modal view controller on itself",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31487824/

    10-13 06:58