【问题标题】:Hide Navigation Bar in Specific View - Swift 3在特定视图中隐藏导航栏 - Swift 3
【发布时间】:2017-09-29 19:12:37
【问题描述】:

我有 NavigationController 可以通过我的应用处理导航。 根据我的设计,第一个视图应该没有可见的 NavigationBar。之后的所有其他人,都会。

在这个 FirstView 中,到目前为止,我使用它来隐藏 ViewDidLoad 内的 NavBar:

self.navigationController?.isNavigationBarHidden = true

从这个 FirstView 我可以访问其他视图。在这些其他视图中,我使用以下方式显示 NavBar:

self.navigationController?.isNavigationBarHidden = false

我的问题是:

  • 当我从带有可见导航栏的视图导航回到带有隐藏导航栏的 FirstView 时,导航栏现在可见。 基本上,NavBar 只在第一次隐藏,然后显示我是否使用后退按钮。

如何防止这种情况发生?

谢谢!

【问题讨论】:

    标签: ios swift3 uinavigationcontroller uinavigationbar xcode8.2


    【解决方案1】:

    将该代码移至viewWillAppear() 而不是viewDidLoad()

    viewDidLoad() 每个实例化的视图控制器只调用一次,而viewWillAppear() 则在视图控制器即将出现在屏幕上时调用。

    您可以阅读有关视图控制器生命周期的更多信息here

    【讨论】:

    • 我现在明白我的错误了。我将 viewWillAppear 放在 viewDidLoad 中...谢谢您的帮助!
    【解决方案2】:

    FirstViewControllerviewWillAppear 方法中编写以下代码。

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated);
    self.navigationController?.isNavigationBarHidden = true
    }
    

    并在您的 SecondViewControllerviewWillAppear 方法中编写以下代码

     override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated);
    self.navigationController?.isNavigationBarHidden = false
    }
    

    不要尝试在 FirstViewControllerviewWillAppearviewWillDisappear 中隐藏和显示导航栏。

    【讨论】:

      【解决方案3】:

      您可以使用此功能隐藏带有炫酷动画的 NavigationBar:

       func setupAnimationForNavigationBar(caseOfFunction: Bool) {
          if caseOfFunction == true {
              UIView.animate(withDuration: 0.5) {
                  self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
              }
          } else {
              UIView.animate(withDuration: 0.5, animations: {
                  self.navigationController?.navigationBar.transform = CGAffineTransform.identity
              })
          }
      
      }
      

      如果要隐藏 NavigationBar,则设置为“True”,如果要再次调用 NavigationBar,则设置为“False”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-28
        • 2012-07-07
        • 2020-07-04
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多