2014-04-15 137 views
3

嗨,我是iOS開發新手。我有一個導航欄隱藏真正的主屏幕。從那裏我使用back segue導航到另一個視圖。但是當我點擊它顯示主屏幕上的導航欄。這是我的問題描述。導航欄隱藏不工作IOS

在主屏幕onviewload我做:

self.navigationController.navigationBarHidden = YES; 

一旦用戶使用早在新的控制器SEGUE去另一種觀點認爲,我做

self.navigationController.navigationBarHidden = NO; 

而現在,如果我點擊回它會顯示主窗口上的導航欄也是我不想要的。基本上我想要沒有導航欄的主屏幕和導航欄的下一個窗口。

如何做到這一點。需要幫忙。謝謝。

回答

17

將該代碼放在viewWillAppear而不是viewDidLoad中,它應該可以正常工作。

+0

謝謝先生它的工作。 – nilkash

+0

原因 - 在viewDidLoad中'navigationController'尚未分配。 – Sulthan

+0

@Sulthan,不正確。如果你在viewDidLoad中記錄self.navigationController,你會發現它已經存在。只是導航欄的隱藏狀態是在導航控制器級別設置的,所以如果您在一個控制器中將其設置爲「否」,它將保持這種狀態,直到您在所有其他控制器中更改爲止。將代碼放在每個控制器的viewWillAppear方法中可確保在出現該控制器時重置該代碼。 – rdelmar

2
-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.navigationController.navigationBarHidden = YES; 
} 
+0

執行但尚未工作 –

1

我有一個Tab viewcontroller包括4個標籤,我的標籤不需要導航欄的一個,但其他需要。

以前的答案沒有解決我的情況,這些代碼。

//隱藏App導航條,使用RN自己的導航條 
- (void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    self.navigationController.navigationBar.hidden = YES; 
// self.navigationController.navigationBarHidden = YES; //這句是 **完全沒** 個卵用 
// [self.navigationController setNavigationBarHidden:YES animated:NO]; 
} 

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

//恢復App導航條 
- (void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    self.navigationController.navigationBar.hidden = NO; 
// self.navigationController.navigationBarHidden = NO;  //這句是 **完全沒** 個卵用 
    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
}