使用 setNavigationBarHidden in viewWillAppear 不起作用



假设我们有三个屏幕,互相推动了a-> b-> c屏幕A最初位于Tabbar中。导航栏应隐藏在屏幕C中,其余的所有内容都可见。要执行此操作。

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

在所有情况下,ViewWillAppear都会被调用,但是隐藏或显示导航栏并不一定会反映在UI上。例如,如果使用了"后面"按钮,则导航栏出现在A&b但是,如果敲击了TABBARBUTTON,这会导致应用程序甚至从屏幕C直接跳到屏幕,则屏幕A将缺少NavigationBar。我已经检查了self.navigatiocontroller,它是初始化的,并且具有一个值。

我还尝试在ViewDidAppear中设置NavigationBarhidden属性,但没有运气。

在这个问题上有任何帮助吗?什么可能导致这样的怪异情况?

编辑:答案我发现了这个问题。屏幕C是许多容器的复杂屏幕。对不起。

在ViewController A和ViewController B中,使用以下方式:

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

在viewController C中,使用此(如所提到的):

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

我发现了这个问题。屏幕C是许多容器的复杂屏幕。在一个集装箱中,我正在更改导航栏状态,并影响应用程序中的其他所有内容并引起了怪异的beahviour。

尝试以下内容: -

  [self.navigationController setNavigationBarHidden: YES animated:YES];

代替: -

   [self.navigationController setNavigationBarHidden: YES animated:NO];

最新更新