0

我有一个基于导航的应用程序,带有 2 个控制器:vA 和 vB。

vA 是导航控制器的根视图控制器,它是一个全屏控制器,所以当这个控制器显示时,导航栏是隐藏的。

然后我使用

[self.navigationController pushViewController:vB 动画:YES];

在 vB 的 viewDidLoad 我有这个:

self.navigationController.navigationBarHidden = NO;
// then I have navigation buttons defined here

vB从右侧进入屏幕的动画是这样发生的:

  1. 导航栏突然出现在 vA 上
  2. vB 从右侧滑动并填满屏幕。

当我弹出 vB 时,会发生这种情况

  1. vB 向左滑动,显示 vA 在后面。
  2. 此时,我们看到顶部可见导航栏的 vA。记住 vA 应该没有可见的导航栏。然后,导航消失,vA 调整为全屏。

这部动画没有优雅,糟糕,笨拙和错误。

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

我怎么做?

谢谢。

4

2 回答 2

2

您需要使用您在vcB的viewDidLoad中使用的方法的动画版本:

[self.navigationController setNavigationBarHidden:NO animated:YES];

编辑后:在 viewDidLoad 或 viewWillAppear(但不是 viewDidAppear)中似乎工作正常。它需要在 viewWillDisappear 中才能返回。

于 2012-11-09T03:20:06.090 回答
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

于 2012-11-09T03:11:29.527 回答