UISearchController在推送时不会隐藏视图

我正在使用UISearchController在UITableView中显示搜索栏和结果。 我设法正确设置它,但是当我搜索结果然后选择tableview中的一行,并将新的视图控制器推送到导航堆栈时,我希望搜索栏不再可见。 但是,当我尝试这个时,第一个视图控制器中的搜索栏在第二个视图控制器中可见:

if (self.searchController == nil) { self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; self.searchController.searchResultsUpdater = self; self.searchController.dimsBackgroundDuringPresentation = NO; self.searchController.searchBar.scopeButtonTitles = @[]; self.searchController.searchBar.delegate = self; self.tableView.tableHeaderView = self.searchController.searchBar; } 

一个选项是在didSelectRowAtIndexPath:调用self.searchController setActive:NO] didSelectRowAtIndexPath:但是没有办法在没有每次从中选择搜索结果时关闭搜索栏的分散动画的情况下执行此操作。

有没有人有同样的问题? 有没有办法告诉UISearchController在推送时隐藏搜索栏? 我在使用UISearchDisplayController时工作正常

把它放在你的viewDidLoad中:

迅速:

 self.definesPresentationContext = true 

Objective-C的:

 self.definesPresentationContext = YES; 

这解决了我的问题。