快速导航栏中的行为

时间:2016-08-07 10:31:21

标签: ios swift uiviewcontroller

我有三个视图控制器,它们嵌入在导航控制器中。

架构如下: enter image description here

我想隐藏第一个视图控制器的导航栏。

为此,我使用

navigationController?.setNavigationBarHidden(true, animated: true)

在viewdidload方法中(对于第一个控制器)。 在另外两个控制器中使用相同但使用false参数来启用导航栏。

当我加载应用程序 - 一切都很好,NB被禁用,当我去第二个控制器也一切都很好 - 它被启用。但!当我按下第二个控制器的导航栏上的后退按钮并将用户发送到第一个控制器时 - 在那里启用导航栏。

当我们返回控制器时是否应该使用特殊方法?任何人都可以向我解释一下吗?真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

当您按下后退按钮时,您的视图控制器viewDidLoad方法不会再次被调用(因为未重新创建控制器),导航栏将具有与您返回之前相同的状态。

为了更新每个视图控制器的导航栏,您必须使用viewWillAppear方法而不是viewDidLoad更新它。

答案 1 :(得分:0)

在viewController的viewWillAppear方法中使用它。

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