假设我们有三个屏幕,互相推动了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];