UINavigationBar消失了iOS7

时间:2014-01-13 10:46:48

标签: ios7 uinavigationcontroller uinavigationbar viewwillappear

我对UINavigationBar有一些奇怪的错误。

有时它会消失(实际上,如果你将视图移动到屏幕的一半,然后只是释放它)

gif 5,3mb

Video example

在我调用的第一个ViewController的viewWillAppear:方法中:

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

第二个ViewController的viewWillAppear:包含:

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

我尝试更改animated:参数,但没有帮助。

是iOS7错误还是我做错了什么?

3 个答案:

答案 0 :(得分:2)

我找到了原因。 发生这种情况的原因是info.plist

View controller-based status bar appearance等于YES

如果将其更改为NO,则一切正常

答案 1 :(得分:1)

我遇到了同样的问题,并修复了它。解决方案是:

  1. 修改info.plist,将“查看基于控制器的状态栏外观”设置为NO;

  2. 全部删除 - (UIStatusBarStyle)preferredStatusBarStyle {};

  3. 如果您的视图控制器具有不同的状态栏样式,请使用[[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];
}

如果您需要更改控制器的顺序,那么事件就会起作用。