0

假設我們有三個屏幕像這樣互相推送 A-> B-> C 屏幕A原本是在tabBar中。 導航欄應該被隱藏在屏幕C和可見的所有rest.To的做到這一點我做了以下在viewWillAppear中使用setNavigationBarHidden不起作用

-(void) viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden: YES animated:NO]; 
} 

的viewWillAppear中被調用在所有的情況下,但隱藏或顯示的導航欄不一定在UI上得到反映。 例如,如果使用後退按鈕,則導航欄會同時出現在A & B中,但是如果點擊tabBarButton,導致應用程序即使從屏幕C直接跳轉到屏幕A,屏幕A也會缺少導航欄。 我檢查了self.navigatioController,它已經初始化並且有一個值。

我也試着在viewDidAppear中設置NavigationBarHidden屬性,但沒有運氣。

在這個問題上的任何幫助?什麼可能導致這樣一個奇怪的場景?

編輯︰答案 我發現了這個問題。 屏幕C是很多容器的複雜屏幕。在其中一個容器中,我改變了navigationBar狀態,並影響了應用程序中的所有其他內容,並導致了奇怪的行爲,並使我無法自己控制狀態。 對不起。

+0

你試過把它隱藏在vc B的'viewDidDissapear'上嗎? – Tj3n

+0

是的,我做了,但也沒有工作也# –

+0

'[self.navigationController setNavigationBarHidden:YES];'工作正常,當我只是把它放在'viewDidLoad',你可能想再次檢查,如果你取消隱藏它的某個地方代碼 – Tj3n

回答

0

在這兩種的viewController A和的viewController B,使用此:

-(void) viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden: NO animated:NO]; 
} 

在的viewController C,使用此(如在問題中提到):

-(void) viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    [self.navigationController setNavigationBarHidden: YES animated:NO]; 
} 
+0

這正是我在做什麼,但由於某種原因,它不工作。 它之前工作,但突然停止。 –

+0

我會檢查並回復給你.. – KSR

+0

你可以發表你的viewControllers的截圖嗎? – KSR

-1

嘗試以下方法: -

[self.navigationController setNavigationBarHidden: YES animated:YES]; 

代替: -

[self.navigationController setNavigationBarHidden: YES animated:NO]; 
0

我發現了這個問題。屏幕C是一個很多容器的複雜屏幕。 在其中一個容器中,我改變了navigationBar狀態,並且影響了應用程序中的所有其他內容,並導致了怪異的beahviour。

+0

Ok ..你的問題解決了.. – KSR

+0

在我的示例中,我的答案工作正常.. – KSR