我有一个基于导航的应用程序,带有2个控制器:vA和vB。
vA是导航控制器的根视图控制器,它是一个全屏控制器,因此当显示此控制器时,导航栏将被隐藏。
然后我使用
推送vB[self.navigationController pushViewController:vB animated:YES];
在vB的viewDidLoad上我有这个:
self.navigationController.navigationBarHidden = NO;
// then I have navigation buttons defined here
vB从右边进入屏幕的动画就是这样:
当我弹出vB时,就会发生这种情况
这个动画没有优雅,是可怕的,笨重的和错误的。
我想要的是:导航与vB一起滑入和滑出。
我该怎么做?
感谢。
答案 0 :(得分:2)
您需要使用vcB viewDidLoad中使用的方法的动画版本:
[self.navigationController setNavigationBarHidden:NO animated:YES];
编辑后:它似乎在viewDidLoad或viewWillAppear(但不是viewDidAppear)中正常工作。它需要在viewWillDisappear中才能返回。
答案 1 :(得分:1)
尝试以下方法:
- (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