UISearchController在推送View时不会被解除

我知道这是一个长时间的写作,但这只是我保证的一个问题。

安装程序

我用UISearchController得到一些非常奇怪的行为。 让我来描述层次结构,然后我会逐步解释我的video中会发生什么:

你看到的第一个视图是一个普通的ViewController,其中tableView和UISearchController是完全独立的实体。 UISearchController在我创build时有自己的searchResultsController:

let searchResultsController = MyResultsControllerClass() searchController = UISearchController(searchResultsController: searchResultsController) 

这是基本的设置。

行为

链接到行为的video

MyResultsControllerClass有一个tableView,还有一个指向主视图控制器的指针,所有这些视图都被放置在其中。当searchController的searchBar开始search时,你会看到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推,没有任何反应。 我尝试将UISearchControllerembedded到自己的UINavigationController中,并从searchController.navigationController中推送,没有任何反应。 在推送之前,我可以完全取消编辑,但是我希望编辑在导航时仍然存在。

我究竟做错了什么? 有一个更好的方法吗?

我有同样的确切问题,我已经通过设置来解决它:

 self.definesPresentationContext = YES; 

在呈现UISearchController的视图控制器上。 这是苹果公司在WWDC会议228推荐的,在这里阅读: http : //asciiwwdc.com/2014/sessions/228 。