从搜索结果表(UISearchController)导航到视图(推送),并将搜索结果保留在适当位置



我有一个搜索结果表(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个小的更改。

  1. _searchController.hidesNavigationBarDuringPresentation = YES;
  2. [self presentViewController:_searchController animated:YES completion:nil];
  3. 显示searchController的viewController的viewDidLoad中的self.definesPresentationContext = YES;//

相关内容

  • 没有找到相关文章

最新更新