【发布时间】:2016-12-06 10:30:26
【问题描述】:
假设我们有三个像这样依次推送的屏幕 A->B->C 而屏幕 A 原本是在一个 tabBar 中。 导航栏应隐藏在屏幕 C 中并在所有其余部分中可见。为此,我正在执行以下操作
-(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 是许多容器的复杂屏幕。在其中一个容器中,我正在更改导航栏状态,这会影响应用程序中的其他所有内容,并导致奇怪的行为,让我无法自己控制状态。 给您添麻烦了。
【问题讨论】:
-
您是否尝试将其隐藏在 vc B 的
viewDidDissapear上? -
是的,我做了,但也没有用
-
[self.navigationController setNavigationBarHidden:YES];对我来说很好,我只是把它放在viewDidLoad中,如果你在代码中的某个地方取消隐藏它,你可能需要再次检查 -
@Mohammad Allam 请检查我的答案并告诉我它是否有效..
标签: ios objective-c uinavigationcontroller hidden viewwillappear