在viewWillAppear中使用setNavigationBarHidden不起作用

时间:2016-12-06 10:30:27

标签: ios objective-c uinavigationcontroller hidden viewwillappear

假设我们有三个屏幕像这样一个接一个地推 A-> B-&以及c 屏幕A最初位于tabBar中。 导航栏应隐藏在屏幕C中,并在所有其余部分中可见。要执行以下操作

-(void) viewWillAppear:(BOOL)animated{

   [super viewWillAppear:animated];

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

在所有情况下都会调用viewWillAppear,但隐藏或显示navigationBar不一定会在UI上反映出来。 例如,如果使用后退按钮,导航栏将同时出现在A& A中。 B但是如果点击tabBarButton,导致应用程序甚至直接从屏幕C跳转到屏幕A,屏幕A将缺少navigationBar。 我检查了self.navigatioController,它已经初始化并且有一个值。

我也试过在viewDidAppear中设置NavigationBarHidden属性,但没有运气。

有关该问题的任何帮助?什么可能导致这种奇怪的情况?

编辑:回答 我发现了这个问题。 屏幕C是许多容器的复杂屏幕。在其中一个容器中,我正在更改navigationBar状态并影响应用程序中的其他所有内容并导致奇怪的行为并使我无法自己控制状态。 抱歉,麻烦。

3 个答案:

答案 0 :(得分:0)

在viewController A和viewController B中,使用:

order by

在viewController c中,使用它(如上所述):

-(void) viewWillAppear:(BOOL)animated{

   [super viewWillAppear:animated];

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

答案 1 :(得分:0)

我发现了问题。屏幕C是很多容器的复杂屏幕。 在其中一个容器中,我正在更改navigationBar状态,这会影响应用程序中的其他所有内容并导致奇怪的行为。

答案 2 :(得分:-2)

请尝试以下方法: -

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

取代: -

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