我有一个搜索结果表(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];
这在UINavigationBar
上显示了UISearchBar
,并且搜索表按预期显示。当用户从表中选择搜索结果时,我希望在搜索结果保持不变的情况下,通过将其推到导航堆栈上来呈现选择的视图。我现在的工作方式是,显示搜索控制器的视图打开该视图,但这需要取消搜索控制器,因为search result view
显示在搜索结果表后面。
如何使搜索控制器将search result view
推送到导航堆栈上,允许用户导航回搜索结果
在iOS日历邮件应用程序(当你搜索时)中可以找到一个我希望它如何工作的例子。
我在搜索结果控制器中的navigationController
属性为零,因此我当前无法从中显示search result view
。
该项目同时使用Objective-C和Swift,所以两者都可以。非常感谢您的帮助!
我认为您需要进行3个小的更改。
_searchController.hidesNavigationBarDuringPresentation = YES;
[self presentViewController:_searchController animated:YES completion:nil];
- 显示searchController的viewController的
viewDidLoad
中的self.definesPresentationContext = YES;
//