UINavigationBar 弹出进出而不是滑动
Posted
技术标签:
【中文标题】UINavigationBar 弹出进出而不是滑动【英文标题】:UINavigationBar popping in and out instead of sliding 【发布时间】:2012-11-09 03:07:10 【问题描述】:我有一个基于导航的应用程序,带有 2 个控制器:vA 和 vB。
vA 是导航控制器的根视图控制器,它是一个全屏控制器,所以当这个控制器显示时,导航栏是隐藏的。
然后我使用
推送 vB[self.navigationController pushViewController:vB 动画:YES];
在 vB 的 viewDidLoad 上我有这个:
self.navigationController.navigationBarHidden = NO;
// then I have navigation buttons defined here
vB从右侧进入屏幕的动画是这样发生的:
-
导航栏突然出现在 vA 上
vB 从右侧滑动并填满屏幕。
当我弹出 vB 时,会发生这种情况
-
vB 向左滑动,显示 vA。
此时,我们看到顶部可见导航栏的 vA。记住 vA 应该没有可见的导航栏。然后,导航消失,vA 调整为全屏。
这个动画没有优雅,糟糕,笨拙和错误。
我想要的是:导航与 vB 一起滑入和滑出。
我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:你需要使用你在vcB的viewDidLoad中使用的方法的动画版:
[self.navigationController setNavigationBarHidden:NO animated:YES];
编辑后:它似乎在 viewDidLoad 或 viewWillAppear(但不是 viewDidAppear)中工作正常。它需要在 viewWillDisappear 中才能返回。
【讨论】:
【参考方案2】:尝试以下方法:
- (void)viewWillAppear:(BOOL)animated
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
- (void)viewDidDisappear:(BOOL)animated
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewDidDisappear:animated];
// OR viewWillDisappear as mentioned by @RubberDuck
不是在viewDidLoad
中隐藏导航栏,而是实现viewWillAppear
和viewDidDisappear
【讨论】:
打字30秒后我意识到解决方案是这样的,你的答案几乎就在那里,右边是viewWillDisappear!谢谢!以上是关于UINavigationBar 弹出进出而不是滑动的主要内容,如果未能解决你的问题,请参考以下文章
如何禁用 UINavigationBar 上的向右滑动手势?
iOS 故事板 UINavigationController 不正确地弹出视图(向下滑动,而不是向右滑动)
使用滑动隐藏的 UINavigationBar 会留下一个拦截点击以显示它的区域?
将 UIImageView 全局添加到 UINavigationBar 而不是标题