UISearchController在推送时不会隐藏视图

Z S*_*Z S 13 uitableview uisearchbar uisearchdisplaycontroller ios uisearchcontroller

我正在使用UISearchController在UITableView中显示搜索栏和结果.我设法正确设置它,但是当我搜索结果然后选择tableview中的一行,并将新的视图控制器推送到导航堆栈时,我希望搜索栏不再可见.但是,当我尝试这个时,第一个视图控制器中的搜索栏在第二个视图控制器中可见:

    if (self.searchController == nil) {
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater = self;
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.searchBar.scopeButtonTitles = @[];
    self.searchController.searchBar.delegate = self;

    self.tableView.tableHeaderView = self.searchController.searchBar;
}
Run Code Online (Sandbox Code Playgroud)

一种选择是调用self.searchController setActive:NO]内部didSelectRowAtIndexPath:但没有办法在没有每次从中选择搜索结果时关闭搜索栏的分散动画的情况下执行此操作.

有没有人有同样的问题?有没有办法告诉UISearchController在推送时隐藏搜索栏?我在使用UISearchDisplayController时工作正常

Eri*_*206 36

把它放在你的来电者的 viewDidLoad中:

迅速:

self.definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)

Objective-C的:

self.definesPresentationContext = YES;
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.

  • 多么晦涩难懂的解决方案.但果然,它奏效了! (4认同)
  • 在WHD的`viewDidLoad`中?当前或目标控制器.但无论如何都不适用于这两种情况. (4认同)
  • 我不确定什么更奇怪.事实上,它对你有效,或者它对我不起作用. (2认同)