UIViewController - View1、View2、View 3依次显示
Posted
技术标签:
【中文标题】UIViewController - View1、View2、View 3依次显示【英文标题】:UIViewControllers - View1, View2, View3 displayed in succession 【发布时间】:2013-02-12 19:33:22 【问题描述】:我需要连续显示三个 UIViewController。 UIViewController1 是我的主视图控制器,有一个按钮。单击该按钮以模态方式显示 UIViewController2。 30 秒后,UIViewController3 自动模态显示。我是否必须先关闭 UIViewcontroller2 然后显示 UIViewController3?我在 UIViewcontroller3 上有一个完成按钮,单击它应该带我回到 UIViewController1(主视图控制器)。我是否首先从链中解除 UIViewController2,然后在 UIViewController1 上执行 alloc/init 以显示它?我不想在这个过程中出现任何内存泄漏。
请帮忙。
【问题讨论】:
为什么还要使用新的视图控制器?为什么不直接使用 UIViews? 我很困惑。当我指的是 UIViewControllers 时,我指的是 UIViews,它们中的每一个都与它们的 .xib 文件相关联。如果我理解正确,我不会使用故事板。 【参考方案1】:您可以通过两种主要方式来做到这一点,您已经提到了其中一种。在 XCode 中测试了这个场景之后。
第一个涉及从最终视图控制器(第三个)中解除所有模态视图控制器。通过这样做,您不能使用动画来关闭视图控制器。如果您尝试为它们设置动画,第二个将不会被解雇。 (当然,你可以用动画关闭第二个,但它会显示从第二个到第一个的动画,而不是从第三个到第一个)
为此,您需要将第二个视图控制器作为属性传递给第三个视图控制器,以便调用该行:
[[self parentVC] dismissModalViewControllerAnimated:NO];
注意,parentVC 是一个属性,应该设置为指向第二个视图控制器
那么当解散时:
[self dismissModalViewControllerAnimated:NO];
[[self parentVC] dismissModalViewControllerAnimated:NO];
这将带您回到第一个视图控制器。
第二个,这并不是真正的好坏,但可能更容易编码,是在进入第三个之前关闭第二个视图控制器;同样,您可能不希望在从第二个到第三个的过渡之间为视图控制器设置动画,但您可以从第三个到第一个进行动画处理。
【讨论】:
我今晚试试这个,明天告诉你。再次感谢 我明白你在说什么,但没有工作。让我在另一个线程中详细解释。谢谢。 新问题在这里:***.com/questions/14868812/… @Hema,我对您的new question 的回答是关于如何实施大卫的第二个建议的详细信息。至于他的第一个建议,需要对物体进行更精细的处理,所以我不推荐。以上是关于UIViewController - View1、View2、View 3依次显示的主要内容,如果未能解决你的问题,请参考以下文章