UINavigationBar弹出和弹出而不是滑动

时间:2012-11-09 03:07:10

标签: iphone ios ipad uinavigationcontroller

我有一个基于导航的应用程序,带有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从右边进入屏幕的动画就是这样:

  1. 导航栏突然出现在vA
  2. vB从右侧滑动并填满屏幕。
  3. 当我弹出vB时,就会发生这种情况

    1. vB向左滑动,显示后面的vA。
    2. 目前,我们看到顶部可见导航栏的vA。记得vA应该没有可见的导航栏。然后,导航消失,vA调整为全屏。
    3. 这个动画没有优雅,是可怕的,笨重的和错误的。

      我想要的是:导航与vB一起滑入和滑出。

      我该怎么做?

      感谢。

2 个答案:

答案 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中的导航栏,而是实施viewWillAppearviewDidDisappear