UISearchController 使控制器变黑
UISearchController makes the controller black
我在 iOS 8 中使用 UISearchController,在选项卡控制器中嵌入的视图控制器的 viewDidLoad 中使用以下初始化
_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
并且搜索有效,表格视图得到正确更新,等等。
但是!
如果我在搜索控制器处于活动状态时将选项卡切换到另一个选项卡(只需点击搜索栏或使用一些文本),然后返回到搜索选项卡,我会得到一个只有搜索栏的空白屏幕,像这样
在这种情况下,我搜索以 lar
开头的内容,结果为 return 并正确显示。但是如果我切换选项卡,然后 return 到搜索选项卡,我会得到这样的空白屏幕。控制器 return 恢复到其原始状态的唯一方法是我 _searchController.active = NO
。但是,如果用户想要保持该搜索处于活动状态,我不能只停用它。
我确定我遗漏了一些东西,但是由于在 UISeachController 中没什么可做的,所以我无法弄清楚是什么原因造成的..
尝试 self.definesPresentationContext = 是;而不是没有。这是我设置 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方法中编写如下代码
self.definesPresentationContext = 真
searchController.searchResultsUpdater = 自己
searchController.searchBar.delegate = 自己
searchController.dimsBackgroundDuringPresentation = 假
searchController.definesPresentationContext = 真
我在 iOS 8 中使用 UISearchController,在选项卡控制器中嵌入的视图控制器的 viewDidLoad 中使用以下初始化
_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
并且搜索有效,表格视图得到正确更新,等等。
但是!
如果我在搜索控制器处于活动状态时将选项卡切换到另一个选项卡(只需点击搜索栏或使用一些文本),然后返回到搜索选项卡,我会得到一个只有搜索栏的空白屏幕,像这样
在这种情况下,我搜索以 lar
开头的内容,结果为 return 并正确显示。但是如果我切换选项卡,然后 return 到搜索选项卡,我会得到这样的空白屏幕。控制器 return 恢复到其原始状态的唯一方法是我 _searchController.active = NO
。但是,如果用户想要保持该搜索处于活动状态,我不能只停用它。
我确定我遗漏了一些东西,但是由于在 UISeachController 中没什么可做的,所以我无法弄清楚是什么原因造成的..
尝试 self.definesPresentationContext = 是;而不是没有。这是我设置 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方法中编写如下代码
self.definesPresentationContext = 真
searchController.searchResultsUpdater = 自己
searchController.searchBar.delegate = 自己
searchController.dimsBackgroundDuringPresentation = 假 searchController.definesPresentationContext = 真