错误"应用程序试图在操作上激活UISearchController时尝试提供模态视图控制器"

Bar*_*zyk 10 xcode ios swift uisearchcontroller

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

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

searchController = UISearchController(searchResultsController: searchResultController)

searchController.searchResultsUpdater = self
searchController.delegate = self

searchResultController.tableView.tableHeaderView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)

我采取的一些行动是:

@IBAction func cityButtonTapped(sender: UIButton) {
    searchController.active = true
}
Run Code Online (Sandbox Code Playgroud)

但后来我有一个错误:

应用程序试图在自身上呈现模态视图控制器.提出控制器是UISearchController: 0x7f9a0c04a6a0

小智 20

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

  • active属性设置为YES会执行搜索控制器的默认显示.
  • searchResultsController参数设置为nil在您要搜索的同一视图中显示搜索结果.

因此,看起来您正在使用当前的视图控制器本身searchResultsController,因此当您尝试设置active为YES时,它会尝试以模态方式呈现您当前的视图,从而显示错误.

  • [searchController setActive:NO]帮了我大忙。当我尝试以编程方式关闭searchController时,我的应用程序崩溃了。直到iOS 10.3,这才成为问题,但在iOS 11上崩溃。我没有停用它,而是直接停用了控制器。如果您的任何应用程序仅在iOS11上遇到相同的问题,就值得尝试。 (2认同)