簡體   English   中英

在viewWillAppear中使用setNavigationBarHidden不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM