我有一个带有UISearchController的应用程序。 UI的此元素完全通过以下代码进行设置:

searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.searchBarStyle = UISearchBarStyle.Minimal

searchController.searchBar.frame = CGRectMake(searchController.searchBar.frame.origin.x, searchController.searchBar.frame.origin.y, searchController.searchBar.frame.size.width, 44.0)

然后将其添加到tableView的tableHeaderView中
tableView.tableHeaderView = searchController.searchBar

一切似乎都工作正常,但是当它处于 Activity 状态并且我在tableView中选择一个项目时,我的应用会选择另一个 View Controller ,而搜索 Controller 将保留在 View 中。我不确定这怎么可能,因为搜索 Controller 应该是另一个 View Controller 中表 View 的 subview 。如何防止这种情况发生?

最佳答案

您可以通过将prepareForSegue中的active属性设置为false来手动隐藏searchController。在prepareForSegue()中添加以下代码

searchController.active = false

另外,您应该在viewDidLoad()中添加以下行以获取默认行为
definesPresentationContext = true

definesPresentationContext的文档中



讨论



重要说明(来自@paulvs,位于注释中)

关于ios - UISearchController在segue之后仍然存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29472011/

10-12 14:31