2016-08-07 95 views
1

我有三個視圖控制器,它們嵌入在導航控制器中。快速導航欄行爲

架構如下: enter image description here

我想隱藏從第一視圖控制器導航欄。

爲此我使用

navigationController?.setNavigationBarHidden(true, animated: true) 

在viewDidLoad方法(用於第一控制器)。 與其他兩個控制器一樣,但使用false參數來啓用導航欄。

當我加載應用程序 - 一切都很好,NB被禁用,當我去第二個控制器也都很好 - 它被啓用。但!當我按下第二個控制器導航欄上的按鈕並將用戶發送到第一個控制器時 - 此處啓用了導航欄。

當我們返回到控制器時,是否有一個特殊的方法應該使用?有人可以向我解釋這一點嗎?非常感謝您的幫助。

回答

0

當您按下返回按鈕時,您的視圖控制器viewDidLoad方法不會再次被調用(因爲控制器未被重新創建)並且導航欄將具有與您返回之前相同的狀態。

爲了更新每個視圖控制器的導航欄(如圖所示),您必須在viewWillAppear方法中更新它,而不是viewDidLoad

0

在viewController的viewWillAppear方法中使用它。

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