我对UINavigationBar有一些奇怪的错误。
有时它会消失(实际上,如果你将视图移动到屏幕的一半,然后只是释放它)
在我调用的第一个ViewController的viewWillAppear:
方法中:
[self.navigationController setNavigationBarHidden:NO animated:YES];
第二个ViewController的viewWillAppear:
包含:
[self.navigationController setNavigationBarHidden:YES animated:NO];
我尝试更改animated:
参数,但没有帮助。
是iOS7错误还是我做错了什么?
答案 0 :(得分:2)
我找到了原因。
发生这种情况的原因是info.plist
View controller-based status bar appearance
等于YES
如果将其更改为NO
,则一切正常
答案 1 :(得分:1)
我遇到了同样的问题,并修复了它。解决方案是:
修改info.plist,将“查看基于控制器的状态栏外观”设置为NO;
全部删除 - (UIStatusBarStyle)preferredStatusBarStyle {};
如果您的视图控制器具有不同的状态栏样式,请使用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
e.g。在viewWillAppear中设置为浅,在消失时,设置为暗样式。
答案 2 :(得分:0)
您应该为每个导航控制器定义外观。 如果您想在第二个控制器上安装导航栏,则只应在该特定控制器中执行以下操作:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
如果您需要更改控制器的顺序,那么事件就会起作用。