iPhone如何在第一页隐藏导航栏?

402
我有下面的代码,它隐藏并显示导航栏。 当第一个视图加载时,它被隐藏,当调用“children”时再次隐藏。 问题是我找不到触发器/事件来让它在返回根视图时再次隐藏....
在根页面上有一个“测试”按钮可以手动执行该操作,但它不够美观,我希望它自动执行。
-(void)hideBar 
{
    self.navController.navigationBarHidden = YES;
}
-(void)showBar 
{       
    self.navController.navigationBarHidden = NO;
}
14个回答

0

Swift 4:

在你想要隐藏导航栏的视图控制器中。

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
    super.viewWillAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
    super.viewWillDisappear(animated)
}

0
最简单的实现方式可能是让每个视图控制器在其viewWillAppear:animated:方法中指定其导航栏是否隐藏。同样的方法也适用于隐藏/显示工具栏:
- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setToolbarHidden:YES/NO animated:animated];
    [super viewWillAppear:animated];
}

实际上,我的建议只适用于工具栏,因为隐藏导航栏而没有相应的显示调用会使用户无法从当前视图返回。 - SteveCaine

0
仅在第一页隐藏导航栏也可以通过Storyboard实现。在Storyboard中,转到Navigation Controller Scene->Navigation Bar。然后从Attributes inspector中选择“Hidden”属性。这将隐藏导航栏,直到为所需的视图控制器设置可见性。
可以在ViewController的ViewWillAppear回调中将导航栏设置回可见状态。
-(void)viewWillAppear:(BOOL)animated {

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

-1
通过在您的ViewController中实现此代码,您可以获得此效果。实际上,诀窍是在启动该控制器时隐藏navigationBar。
- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [super viewWillAppear:animated];
}

在用户离开该页面时,在viewWillDisappear中取消隐藏导航栏。
- (void)viewWillDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [super viewWillDisappear:animated];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接