无法隐藏在SearchDisplayCotroller中的popViewController之后突然出现的导航栏

时间:2014-11-11 02:48:18

标签: ios objective-c uinavigationcontroller xcode6 uisearchdisplaycontroller

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

enter image description here

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

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

- (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];
} 

当SearchDisplayController仍然处于活动状态时,当popViewControllerAnimated:YES时,会出现一个奇怪的白色导航栏,而我的viewWillAppear无法隐藏该栏。这是一个错误还是有任何方法可以阻止此栏出现?

下面的gif也可以让你知道发生了什么。谢谢!

Look at the white navigation bar that appeared

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:1)

在致电UISearchDisplayController之前致电setActive:NO animated:NO,尝试停用[self.navigationController popViewControllerAnimated:YES];

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