我有一个UINavigationController,根视图不会通过
显示顶部导航栏
[[self navigationController] setNavigationBarHidden:YES animated:NO];
我正在推送的视图确实需要显示导航栏,我正在使用上面的方法来显示它,然后在弹出视图时再次隐藏它。这导致了一些奇怪的事情,我不想继续这样做。
编辑:为了澄清,现在我在推送视图中使用[[self navigationController] setNavigationBarHidden:NO animated:NO];
,发生的事情是导出视图和新视图中都出现了导航栏,看起来非常混乱发生。这是目前正在发生的事情:
我想要的是什么:
相反,我希望导航栏在推送视图时已经显示,而不是在根视图上显示,就像hidesBottomBarWhenPushed
属性的行为一样。
有人能指出我在正确的方向吗?
答案 0 :(得分:1)
如果你把:
怎么办?[[self navigationController] setNavigationBarHidden:NO animated:NO];
推送视图控制器的-viewDidLoad
方法中的?
答案 1 :(得分:1)
我注意到如果允许它们进行动画处理,转换会更加平滑(没有奇怪的闪烁)。将您的动画标记切换为“是”,看看是否可以解决问题。
[[self navigationController] setNavigationBarHidden:YES animated:YES];
[[self navigationController] setNavigationBarHidden:NO animated:YES];
此外,我取消选中我的导航控制器的IB检查器中的“显示导航栏”复选框,而不是在代码中执行此操作。这样,当从xib解冻时,它的默认状态是隐藏的。代码应该有效地做同样的事情,但它可能值得尝试,因为我没有你在实现同样的事情时描述的问题。
答案 2 :(得分:0)
两条评论。我正在做同样的事情,我同意它似乎在动画时效果更好。你也应该在viewWillAppear或viewDidAppear中调用它。我个人使用viewDidAppear和动画:是的,并认为看起来很不错。
由于您正在设置应用程序级别设置,因此您需要确保在正确的时间调用它以避免遇到的问题。