iOS 7 UINavigationBar 在视图转换时未隐藏

Posted

技术标签:

【中文标题】iOS 7 UINavigationBar 在视图转换时未隐藏【英文标题】:iOS 7 UINavigationBar not hidden while view transition 【发布时间】:2013-10-31 03:05:24 【问题描述】:

我有像 vc1 -> vc2 -> vc1 这样的视图控制器转换。我需要将 UINavigationBar 隐藏在 vc1 中,并显示在 vc2 中。

我执行以下操作:

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    self.navigationController.navigationBarHidden = YES;


- (void)viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];

    self.navigationController.navigationBarHidden = NO;

ios6 中,它运行良好。但是在iOS7中,当我从vc1回到vc2时,导航栏没有隐藏,而是在状态栏后面向上移动,过渡动画完成后导航栏被隐藏了。

如何才能真正隐藏导航栏?

【问题讨论】:

【参考方案1】:

试试这样:

-(void)viewWillAppear:(BOOL)animated

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


-(void)viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];

    [self.navigationController setNavigationBarHidden:NO]; 

或尝试这样:

- (void)viewWillAppear:(BOOL)animated

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


- (void)viewWillDisappear:(BOOL)animated

    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];

【讨论】:

谢谢。使用 [self.navigationController setNavigationBarHidden:YES animated:animated] 有效!【参考方案2】:

在 VC2 控制器中把这个放在 - viewDidLoad

[self.navigationController setNavigationBarHidden:NO];

在 VC1 控制器中将其放入 -ViewDidLoad

[self.navigationController setNavigationBarHidden:YES];

然后VC1也添加这个

- (void)viewWillAppear:(BOOL)animated

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

希望对你有帮助...

【讨论】:

以上是关于iOS 7 UINavigationBar 在视图转换时未隐藏的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 UINavigationBar 在 iOS 7 中覆盖视图顶部?

ios 7子视图UINavigationBar与状态栏重叠..任何简单的解决方案..?

iOS 7 UITableView 在 UINavigationBar 下扩展

iOS 7.1 UINavigationbar 和 UIToolbar

iOS 7 中 UINavigationbar 下方的 UISegmentedControl

iOS 7 UINavigationBar 隐藏了后退按钮