ios - iPhone仅在第一页隐藏导航栏

标签 ios uinavigationcontroller hide

我有下面的代码来隐藏和显示导航栏。它在第一个 View 加载时隐藏,然后在调用“ child ”时隐藏。问题是当他们回到 Root View 时,我找不到触发它再次隐藏的事件/ Action ....

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

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

最佳答案

我找到的最好的解决方案是在第一个 View Controller 中执行以下操作。

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

swift

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 插入堆栈时,这将导致导航栏从左侧开始动画(与下一个 View 一起),并向左动画(与旧 View 一起) View ),当您按下 UINavigationBar 上的后退按钮时。

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

关于ios - iPhone仅在第一页隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845583/

相关文章:

objective-c - 保留计数总是-1?

ios - 如何将 UIView 与从 ViewController 继承的属性或变量一起使用?

ios - 为什么在我用代码创建 UIBarButtonItem 时不显示它?

ios - 无法使用xcode phonegap在ios中隐藏状态栏

ios - 计时器显示/隐藏 subview

ios - 从 Sandbox 中的 DAE 模型加载 SCNScene 对象

ios - RestKit删除孤立对象规则

操作系统。 segue.destinationViewController对象与加载的Controller不同

ios - 查看旧导航栏和选项卡栏 Controller 的 Controller 问题

excel - 如果列中的值为否(50+列/表)使用循环隐藏多个工作表