iOS推送导航控制器,在第二个视图中没有工具栏

3
我有一个iOS应用程序,使用UINavigationController设计。然而,其中一个推送的视图控制器需要一个全屏视图,没有顶部的导航栏。(返回只需一个小圆形按钮)。然而,我尝试过的任何“隐藏”导航栏的方法(navigationCtl.navigationBar.hidden=TRUE)都会留下丑陋的痕迹 - 在视图被推入之前调用它(在viewDidLoad或viewWillAppear中)会导致前一个视图控制器的栏在滑动左侧动画开始时闪白。同样,在viewDidAppear中调用它会在第二个视图顶部留下一个白色栏,以及向下推出多个子视图,腾出空间。是否有任何方法,当新视图滑过来时,只需没有顶部的导航栏就可以像通常一样在两个UIViewControllers之间进行动画,而不会闪烁?
请注意,为了帮助谷歌,这里的本质问题是:
如何在一个具有顶部导航栏的UIViewController和一个没有顶部导航栏的UIViewController之间进行动画,从而避免可怕的闪烁。因此,如何从具有导航栏的UIViewController导航到没有导航栏的UIViewController。
Eve给出的惊人答案如下...真棒。

为什么不选择 presentViewController:animated:completion: - Carina
1个回答

11

试试这个,并看看它对你有何作用。

在目标视图控制器中的viewWillAppear方法中。

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

它实际上具有很酷的效果并且可以很有用。在viewWillAppear中,所有操作都发生在视图显示之前,因此可以消除奇怪的伪影。

祝好


1
将动画从“否”更改为“是”还可以修复导航堆栈可能损坏的错误。如果设置为“否”,如果您从屏幕左侧向右滑动以返回,但随后取消滑动,则导航栏会出现严重问题。 - Ryan Pendleton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接