topBar相当于hidesBottomBarWhenPushed?

时间:2010-01-16 10:39:51

标签: iphone uinavigationcontroller uinavigationbar

我有一个UINavigationController,根视图不会通过
显示顶部导航栏   [[self navigationController] setNavigationBarHidden:YES animated:NO];

我正在推送的视图确实需要显示导航栏,我正在使用上面的方法来显示它,然后在弹出视图时再次隐藏它。这导致了一些奇怪的事情,我不想继续这样做。

编辑:为了澄清,现在我在推送视图中使用[[self navigationController] setNavigationBarHidden:NO animated:NO];,发生的事情是导出视图和新视图中都出现了导航栏,看起来非常混乱发生。这是目前正在发生的事情: alt text

我想要的是什么: alt text

相反,我希望导航栏在推送视图时已经显示,而不是在根视图上显示,就像hidesBottomBarWhenPushed属性的行为一样。

有人能指出我在正确的方向吗?

3 个答案:

答案 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和动画:是的,并认为看起来很不错。

由于您正在设置应用程序级别设置,因此您需要确保在正确的时间调用它以避免遇到的问题。