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