在当前视图控制器下显示新的视图控制器

Posted

技术标签:

【中文标题】在当前视图控制器下显示新的视图控制器【英文标题】:Present new view controller underneath current view controller 【发布时间】:2015-05-07 07:27:29 【问题描述】:

我正在尝试呈现一个新的视图控制器,该控制器通过正在关闭的呈现视图控制器进入,并让呈现的视图控制器“已经”在呈现的视图控制器后面,这与呈现模态视图控制器的方式非常相似/被解雇了。

有没有办法通过只展示视图控制器来实现这一点,还是我必须事先展示视图控制器,然后将其隐藏在下面,然后关闭正在展示的视图控制器?

【问题讨论】:

当前视图控制器是如何呈现的?模态的?在导航控制器中?作为别的东西的孩子? 我的回答有帮助吗?你还有问题吗? :) @micnguyen 【参考方案1】:

您确实可以通过将第二个视图控制器“隐藏”在您要显示的第一个视图控制器下方来做到这一点。 UINavigationController 免费为您提供所需的一切。

在显示模态视图的视图控制器中使用以下(伪)代码:

FirstVC *first = [[FirstVC alloc] init]; // this VC is shown first
SecondVC *second = [[FirstVC alloc] init]; // this VC that hides beneath the other

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:second];
[nav pushViewController:first animated:NO];

[self presentViewController:nav animated:YES completion:nil];

然后,当你想关闭第一个视图控制器时,你可以调用:

[self.navigationController popViewControllerAnimated:YES];

请注意,您仍然必须关闭模态视图。

【讨论】:

谢谢 nburk - 这正是我想要的。我不确定我是否推送了一个非动画的视图控制器,它是否仍然会做一个非常垃圾的动画,但这很棒,我只需要给它一个自定义导航控制器动画控制器。干杯伙伴。

以上是关于在当前视图控制器下显示新的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

关闭当前视图控制器并打开新的视图控制器 - ios Swift

在呈现新视图控制器后关闭当前视图控制器 - swift

子类 UIView 以在当前视图控制器上显示框

无法将新的 xib 添加到视图控制器

创建自定义视图控制器动画

在当前显示的视图控制器上呈现 UIWebview