我有一个带有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/