2012-10-31 32 views
12

我發現了很多帖子,但仍然沒有解決方案。我試圖在最初的UIViewController上隱藏NavigationBar,但我仍想在第二個UIViewController上顯示它。這是我的故事板:在故事板中爲一個ViewController隱藏NavigationBar

enter image description here

當我關掉推斷頂酒吧爲我的主視圖控制器,它在故事板消失,但是當我運行程序的時候,仍然顯示。當我對NavController中的NavigationBar執行相同操作時,它會在所有三個中都消失(因爲它們都繼承了no Nav Bar)。

我想在ScrollViewV View Controller中顯示NavBar,但將其隱藏在MainViewController中。

所有的控制器都有相應的.h或.m文件,但我很困惑如何以編程方式執行此操作。讓我知道你是否需要看別的東西。非常感謝!

回答

41

在你mainViewController,你可以做到以下幾點:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

你可能想隱藏這個視圖控制器時顯示導航欄,爲做到以下幾點:

- (void)viewDidDisappear: (BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewDidDisappear:animated]; 
} 
+0

感謝您的替代答案! – Siriss

+0

這是覆蓋viewWillAppear的更好的答案。謝謝你,並且在回答之前不要進一步調查。 – Siriss

+0

我很高興解決了您的問題 – user427969

0
self.navigationController.navigationBarHidden = YES; 
+0

謝謝!所以這意味着,因爲其他人是繼承的,我將不得不將其設置爲可見的其他ViewControllers我有正確的?這真的很簡單....再次感謝。 – Siriss

+0

此外,當我在我的ScrollView視圖控制器中重新打開NavBar時,它會在主視圖控制器中再次顯示導航欄......我如何製作永久性視圖? – Siriss

+1

viewDid/WillAppear和viewDid/WillDissappear ... – Martol1ni

0

我注意到您還需要將以下內容添加到您希望導航出現的控制器中。

[self.navigationController setNavigationBarHidden:NO animated:animated]; 
[super viewWillAppear:animated]; 
2

如果你想保持對事物的故事板比編輯用戶定義的屬性和 設置navigationController.navigationBarHidden爲布爾檢查。

+0

這是一個很棒的建議 – Siriss

+2

這可以工作,但是你將無法在另一個ViewController中使用相同的技巧顯示NavigationBar。 (用戶定義的運行時屬性應用於筆尖加載時,而不是viewWillAppear) – Berik

0

任何人都想知道如何在Swift中做到這一點?

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.hidden = true 
} 
相關問題