![](/img/trans.png)
[英]setNavigationBarHidden doesn't work after setViewControllers
[英]Using setNavigationBarHidden in viewWillAppear doesn't work
假設我們有三個像A-> B-> C這樣互相推后的屏幕,並且屏幕A最初位於tabBar中。 導航欄應隱藏在屏幕C中,其余所有屏幕均應可見。
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden: YES animated:NO];
}
在所有情況下都會調用viewWillAppear,但隱藏或顯示navigationBar不一定會反映在UI上。 例如,如果使用后退按鈕,導航欄將同時出現在A和B中,但是如果點擊tabBarButton,這會導致應用程序甚至直接從屏幕C跳轉到屏幕A,屏幕A會丟失導航欄。 我已經檢查了self.navigatioController,它已初始化並具有一個值。
我也嘗試過在viewDidAppear中設置NavigationBarHidden屬性,但是沒有運氣。
在這個問題上有幫助嗎? 是什么導致這種奇怪的情況?
編輯:答案我發現了問題。 屏幕C是一個包含許多容器的復雜屏幕。在其中一個容器中,我正在更改navigationBar狀態,這會影響應用程序中的其他所有內容,並導致怪異的行為,使我無法自己控制狀態。 抱歉,添麻煩了。
在viewController A和viewController B中,都使用以下命令:
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden: NO animated:NO];
}
在viewController c中,使用this(如所提到的):
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden: YES animated:NO];
}
我發現了問題。屏幕C是包含許多容器的復雜屏幕。 在其中一個容器中,我正在更改navigationBar狀態,這會影響應用程序中的其他所有內容,並導致異常的行為。
嘗試以下方法:
[self.navigationController setNavigationBarHidden: YES animated:YES];
代替:-
[self.navigationController setNavigationBarHidden: YES animated:NO];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.