Nic*_*nto 10 uisearchbar ios ios8 uisearchcontroller
我在iOS 8中使用UISearchController,并在viewDidLoad中使用嵌入在选项卡控制器中的视图控制器中的以下intializait
_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;
Run Code Online (Sandbox Code Playgroud)
我已经实施了
- (void) updateSearchResultsForSearchController:(UISearchController *)searchController 和 (void)filterContentForSearchText:(NSString *)searchText
并且搜索工作,tableview正确更新等.
但!
如果我在搜索控制器处于活动状态时切换选项卡(只需点击搜索栏或某些文本)到另一个选项卡,然后返回到搜索选项卡,我会得到一个只有搜索栏的空白屏幕,就像这样
在这种情况下,我搜索开头的东西lar,它确实返回结果并正确地显示它们.但如果我切换标签,然后返回搜索标签,我会得到一个这样的空白屏幕.如果我这样做,控制器返回其原始状态的唯一方法_searchController.active = NO.但是,如果用户想要保持该搜索活动,我不能只是停用它.
我确信我遗漏了一些东西,但由于在UISeachController中没什么可做的,我无法弄清楚是什么导致了这个...
Mat*_*ith 22
尝试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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |