ios:如何关闭模态视图控制器,然后弹出推送的视图控制器

Posted

技术标签:

【中文标题】ios:如何关闭模态视图控制器,然后弹出推送的视图控制器【英文标题】:ios: how to dismiss a modal view controller and then pop a pushed view controller 【发布时间】:2013-05-01 01:02:05 【问题描述】:

我有一个视图控制器 B,它被根视图控制器 A 推送到导航堆栈上,如果它的模型处于某种状态,这个视图控制器 B 需要显示一个替代视图,因此它以模态方式呈现另一个视图控制器 C。当我关闭视图控制器 C 时,如果它也在导航堆栈上,我还想弹出视图控制器 B。我想以只有 1 次转换的方式进行。

有什么想法吗?

【问题讨论】:

您是使用 xibs 还是故事板来布局视图?听起来您最好的选择可能是在根视图控制器中实例化第三视图,然后将它们添加为子视图。然后可以显示或隐藏这些。这比呈现和关闭模态视图要灵活得多。 我正在使用情节提要,我倾向于使用单独的视图控制器来显示替代状态,因为苹果文档提到如果您有替代界面要显示,那么值得将其作为单独的视图呈现(它在讨论单独的景观视图时提到了这一点)。我认为我需要的实际 ui 更改会更容易通过在当前视图中隐藏的单独视图来实现,所以我会尝试你的建议 【参考方案1】:

在您发布的场景中,视图控制器 C 的呈现视图控制器实际上是导航控制器,因此您可以要求它弹出 B,然后关闭自己。此代码在视图控制器 C 中:

-(IBAction)goBackToA:(id)sender 
    [(UINavigationController *)self.presentingViewController  popViewControllerAnimated:NO];
    [self dismissViewControllerAnimated:YES completion:nil];

如果您使用情节提要,您可以执行相同的操作,通过展开转场直接跳回 A。

【讨论】:

谢谢,经过深思熟虑后,我认为仅使用一个视图控制器并根据模型状态更改其子视图可能会更容易完成,如果需要使用,我会尝试您的方法2 个独立的视图控制器 正是我需要的!

以上是关于ios:如何关闭模态视图控制器,然后弹出推送的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态,然后立即推视图控制器

模态下的弹出/推送视图

关闭后弹出视图控制器

从模态视图控制器推送/弹出到另一个视图控制器(包括图片)

iOS:如何检测视图控制器是不是在弹出或关闭后出现

如何关闭模态视图控制器,然后立即让呈现视图控制器呈现不同的模态视图控制器?