3

我有一个iOS应用程序,设计在UINavigationController中。然而,其中一个推送的视图控制器需要全屏视图,而顶部没有导航栏。 (回来,只有一个小的圆形按钮)。然而,我尝试过的'隐藏'导航栏(navigationCtl.navigationBar.hidden = TRUE)的任何方法都给我留下了丑陋的工件 - 在视图被推入之前(在viewDidLoad或viewWillAppear中)调用它会导致先前的视图控制器栏随着幻灯片离开动画开始,闪烁白色。同样,在viewDidAppear中调用它会在第二个视图的顶部留下一个白色条,同时还会推出几个子视图。有什么办法可以让新视图像平常一样滑过,但是当它结束时,顶部没有导航栏?iOS推送导航控制器,在第二个视图上没有酒吧


请注意,以帮助谷歌,基本上这里的问题是:

如何在两个UIViewControllers间动画,当一个在顶部导航栏,和其他人不具有导航顶部的酒吧。所以,如何从带有导航栏的UIViewController导航到没有导航栏的导航栏 - 避免可怕的闪烁。

令人惊叹的答案在下面由Ev给出...真棒。

+0

为什么不选择'presentViewController:animated:completion:'? – Carina 2012-08-16 02:32:13

回答

9

给这个旋转,看看它是如何工作的。

在目的地视图控制器

在viewWillAppear中

- (void)viewWillAppear:(BOOL)animated { 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
} 

它实际上具有凉爽的效果,并且可以是有用的。在viewWillAppear中,所有事情都在视图显示之前发生,所以它会带走奇怪的工件。

很好

+1

将动画从NO更改为YES还修复导航堆栈可能损坏的错误。将它设置为NO,如果您从屏幕左侧滑动回去,但取消滑动,导航栏会变得非常糟糕。 – 2016-02-26 20:42:53

相关问题