【问题标题】:Navigation bar behaviour in swiftswift中的导航栏行为
【发布时间】:2016-08-07 10:31:21
【问题描述】:

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

架构如下:

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

为此,我使用

navigationController?.setNavigationBarHidden(true, animated: true)

在 viewdidload 方法中(对于第一个控制器)。 在其他两个控制器中也使用了相同的参数,但使用 false 参数来启用导航栏。

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

当我们返回控制器时,是否有一个特殊的方法应该使用?有人可以向我解释一下吗?非常感谢您的帮助。

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在 viewController 的 viewWillAppear 方法中使用它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-29
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多