【问题标题】:Unable to hide navigation bar that suddenly appear after popViewController in SearchDisplayCotrollerSearchDisplayCotroller中popViewController后突然出现的导航栏无法隐藏
【发布时间】:2015-01-07 12:21:37
【问题描述】:

我有一个问题,当 SearchDisplayCotroller 仍然处于活动状态时,调用 popViewController 后突然出现导航栏。

我正在实现一个具有搜索功能的简单表格视图。以上是我的故事板。

在第一个视图中,我已按照以下方式实现。因此,对于第一个视图,导航栏将始终隐藏。

- (void) viewWillAppear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:YES animated:NO];
}

按下按钮将使用以下代码推送下一个表格视图控制器,以便导航栏可见。

- (void) viewWillAppear:(BOOL)animated{
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

在我实现以下代码之前一切正常。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.navigationController popViewControllerAnimated:YES];
} 

当 popViewControllerAnimated:YES 而 SearchDisplayController 仍处于活动状态时,会出现一个奇怪的白色导航栏,并且我的 viewWillAppear 无法隐藏该栏。这是一个错误还是有什么办法可以防止这个栏出现?

下面的 gif 也可以让您了解发生了什么。谢谢!

【问题讨论】:

    标签: ios objective-c uinavigationcontroller xcode6 uisearchdisplaycontroller


    【解决方案1】:

    尝试在拨打[self.navigationController popViewControllerAnimated:YES]; 之前拨打setActive:NO animated:NO 停用您的UISearchDisplayController

    https://developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UISearchDisplayController_Class/index.html#//apple_ref/occ/instm/UISearchDisplayController/setActive:animated:

    【讨论】:

      【解决方案2】:

      试试这个

      -(void) viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        // To check if searchDisplayController still active
        if ([searchDisplayController isActive]) {
          [searchDisplayController setActive:NO];
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多