小编典典

iPhone仅在第一页隐藏导航栏

all

我有下面的代码隐藏和显示导航栏。它在第一个视图加载时隐藏,然后在调用“孩子”时隐藏。麻烦的是,当他们返回根视图时,我找不到触发它再次隐藏的事件/动作......

我在根页面上有一个手动执行操作的“测试”按钮,但它并不漂亮,我希望它是自动的。

-(void)hideBar 
{
    self.navController.navigationBarHidden = YES;
}
-(void)showBar 
{       
    self.navController.navigationBarHidden = NO;
}

阅读 88

收藏
2022-03-22

共1个答案

小编典典

我发现最好的解决方案是在第 一个视图控制器 中执行以下操作。

Objective-C

- (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];
}

迅速

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)
}

当您按下堆栈上的下一个时,这将导致导航栏从左侧(与下一个视图一起)UIViewController动画,并在您按下后退按钮时向左动画(与旧视图一起)UINavigationBar.

另请注意,这些不是委托方法,您正在覆盖UIViewController这些方法的实现,并且根据文档,您 必须在您的实现中的某处调用超级实现

2022-03-22