[英]UISearchController not dismissed when View is pushed
我知道这是一篇很长的文章,但这只是我保证的一个问题。
我用UISearchController得到了一些非常奇怪的行为。 让我描述一下层次结构,然后我将逐步解释我视频中发生的事情:
您看到的第一个视图是常规ViewController,其中tableView和UISearchController是完全独立的实体。 UISearchController有自己的searchResultsController,我在创建时设置它:
let searchResultsController = MyResultsControllerClass()
searchController = UISearchController(searchResultsController: searchResultsController)
这是基本的设置。
MyResultsControllerClass
有一个tableView,以及一个指向主视图控制器的指针,所有这些视图都放在其中。当searchController的searchBar开始搜索时,你会看到tableView显示出来。 然后我点击一个结果,编程俱乐部。 MyResultsControllerClass
使用指向主视图的指针来推送新的视图控制器(只是关于该事件的详细信息),如下所示:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let activityDetail = ActivityDetailViewController(nibName: nil, bundle: nil, activity: searchResults[indexPath.row])
parentController?.navigationController?.pushViewController(activityDetail, animated: true)
}
您可以在searchBar后面看到这种情况,但是searchController不会被呈现的视图“掩盖”! 这是我的问题。 如您所见,我仍然可以与之互动。 当我按“取消”时,它最终消失。
现在,我认为这可能与UISearchController实际上是UIViewController的事实有关,如果我理解正确的话。 所以我试图从UISearchController推送,没有任何反应。 我尝试将UISearchController嵌入到自己的UINavigationController中并从searchController.navigationController推送,没有任何反应。 我可以在推送之前完全取消编辑,但我希望编辑在导航时仍然存在。
我究竟做错了什么? 有一个更好的方法吗?
我有同样的问题,我通过设置解决了它:
self.definesPresentationContext = YES;
在提供UISearchController的视图控制器上。 这是Apple在WWDC会议228中推荐的,请在此处阅读: http : //asciiwwdc.com/2014/sessions/228 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.