在viewWillAppear中使用setNavigationBarHidden不起作用
问题描述:
假设我们有三个屏幕像这样互相推送 A-> B-> C 屏幕A原本是在tabBar中。 导航栏应该被隐藏在屏幕C和可见的所有rest.To的做到这一点我做了以下在viewWillAppear中使用setNavigationBarHidden不起作用
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden: YES animated:NO];
}
的viewWillAppear中被调用在所有的情况下,但隐藏或显示的导航栏不一定在UI上得到反映。 例如,如果使用后退按钮,则导航栏会同时出现在A & B中,但是如果点击tabBarButton,导致应用程序即使从屏幕C直接跳转到屏幕A,屏幕A也会缺少导航栏。 我检查了self.navigatioController,它已经初始化并且有一个值。
我也试着在viewDidAppear中设置NavigationBarHidden属性,但没有运气。
在这个问题上的任何帮助?什么可能导致这样一个奇怪的场景?
编辑︰答案 我发现了这个问题。 屏幕C是很多容器的复杂屏幕。在其中一个容器中,我改变了navigationBar状态,并影响了应用程序中的所有其他内容,并导致了奇怪的行为,并使我无法自己控制状态。 对不起。
答
在这两种的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];
}
答
尝试以下方法: -
[self.navigationController setNavigationBarHidden: YES animated:YES];
代替: -
[self.navigationController setNavigationBarHidden: YES animated:NO];
你试过把它隐藏在vc B的'viewDidDissapear'上吗? – Tj3n
是的,我做了,但也没有工作也# –
'[self.navigationController setNavigationBarHidden:YES];'工作正常,当我只是把它放在'viewDidLoad',你可能想再次检查,如果你取消隐藏它的某个地方代码 – Tj3n