我有一个搜索结果表(UISearchController
),显示在导航堆栈上的视图上。我在视图上显示搜索控制器和表格,如下所示:
_searchResultsTableViewController = [[CalendarSearchResultsTableViewController alloc] init]; _searchResultsTableViewController.delegate = self; _searchController = [[UISearchController alloc] initWithSearchResultsController:_searchResultsTableViewController]; _searchController.delegate = self; _searchController.hidesNavigationBarDuringPresentation = NO; _searchController.dimsBackgroundDuringPresentation = YES; _searchController.obscuresBackgroundDuringPresentation = YES; _searchController.active = YES; _searchController.searchBar.delegate = self; UIEdgeInsets adjustForTabbarInsets = UIEdgeInsetsMake(0, 0, CGRectGetHeight(self.tabBarController.tabBar.frame), 0); _searchResultsTableViewController.tableView.contentInset = adjustForTabbarInsets; _searchResultsTableViewController.tableView.scrollIndicatorInsets = adjustForTabbarInsets; [self.navigationController presentViewController:_searchController animated:YES completion:nil];
这将显示一个UISearchBar
,UINavigationBar
搜索表将按预期显示。当用户从表中选择搜索结果时,我想通过在搜索结果保留在原处的情况下将其推入导航堆栈中来显示选择视图。我现在的工作方式是,显示搜索控制器的视图打开该视图,但这需要关闭搜索控制器,因为search result view
出现在搜索结果表的后面。
如何使搜索控制器将推入search result view
导航堆栈,从而使用户能够导航回搜索结果?
我希望它如何工作的一个示例可以在iOS Mail of Calendar应用程序中找到(搜索时)。
我navigationController
在搜索结果控制器中的属性为nil,因此我目前无法search result view
从那里显示。
该项目在Objective-C和Swift中都可以使用,因此在其中任何一个答案都可以。任何帮助深表感谢!
我认为您需要进行3个小更改。
_searchController.hidesNavigationBarDuringPresentation = YES;
[self presentViewController:_searchController animated:YES completion:nil];
self.definesPresentationContext = YES;
// viewDidLoad
呈现searchController的viewController中的//