UISearchController使控制器变黑

我在iOS 8中使用UISearchController,在tab控制器中embedded视图控制器的viewDidLoad中具有以下intializiton

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; _searchBar = _searchController.searchBar; [_searchController.searchBar sizeToFit]; _searchController.searchBar.delegate = self; _searchController.searchResultsUpdater = self; _searchController.dimsBackgroundDuringPresentation = NO; _searchController.hidesNavigationBarDuringPresentation = NO; self.definesPresentationContext = NO; _shopsTable.tableHeaderView = _searchController.searchBar; 

我已经实施

- (void) updateSearchResultsForSearchController:(UISearchController *)searchController(void)filterContentForSearchText:(NSString *)searchText

和search工作,tableview得到适当更新,等等。

但!

如果我在search控制器处于活动状态时切换标签页(只是点击search栏或一些文本)到另一个标签页,然后返回到search标签页,那么只有search栏会出现空白屏幕,如下所示

在这里输入图像说明

在这种情况下,我search以lar开头的东西,返回结果并正确显示。 但是,如果我切换标签,并返回到search选项卡我得到这样一个空白的屏幕。 控制器返回到原始状态的唯一方法是如果我做_searchController.active = NO 。 但是,如果用户想要保持search活跃,我不能只是停用它。

我相信我失去了一些东西,但由于在UISeachController没有太多的事情,我不知道是什么原因造成的。

试试self.definesPresentationContext = YES; 而不是NO。 这里是我如何设置我的UISearchController,但我没有这样做过的UITabBarController之前。

 func setupSearchController() { let resultsController = UIStoryboard(name: "ATPageTableViewController", bundle: nil).instantiateViewControllerWithIdentifier("ATPageTableSearchResultsViewController") as! ATPageTableSearchResultsViewController searchController = UISearchController(searchResultsController: resultsController) searchController.delegate = self resultsController.delegate = self resultsController.cellIdentifier = ATDataSetItemTableViewCellIdentifier; resultsController.table = self.table! searchController.searchBar.sizeToFit() self.tableView.tableHeaderView = searchController.searchBar searchController.searchResultsUpdater = self searchController.searchBar.delegate = self definesPresentationContext = true } 

在viewDidLoad mehtod中写下面的代码。

self.definesPresentationContext = true

searchController.searchResultsUpdater = self

searchController.searchBar.delegate = self

searchController.dimsBackgroundDuringPresentation = false searchController.definesPresentationContext = true