簡體   English   中英

在特定視圖中隱藏導航欄 - Swift 3

[英]Hide Navigation Bar in Specific View - Swift 3

我有NavigationController處理我的應用程序導航。 根據我的設計,第一個視圖應該沒有可見的NavigationBar。 所有其他人之后,將會。

在這個FirstView中,我到目前為止使用它來隱藏ViewDidLoad中的NavBar:

self.navigationController?.isNavigationBarHidden = true

從這個FirstView我可以訪問其他視圖。 在這些其他視圖中,我使用以下命令顯示NavBar:

self.navigationController?.isNavigationBarHidden = false

我的問題是:

  • 當我從具有Visible NavBar的View導航回到帶有Hidden NavBar的FirstView時,NavBar現在可見。 基本上NavBar只隱藏了第一次然后顯示我是否使用后退按鈕。

我怎么能防止這個?

謝謝!

將該代碼移動到viewWillAppear()而不是viewDidLoad()

viewDidLoad()僅在每個實例化的視圖控制器中調用一次,而每當視圖控制器即將在屏幕上顯示時,都會調用viewWillAppear()

您可以在此處閱讀有關視圖控制器生命周期的更多信息

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
}

不要試圖隱藏和顯示導航在viewWillAppear中viewWillDisappearFirstViewController酒吧subsequetly。

您可以使用此功能隱藏帶有炫酷動畫的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”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM