我需要连续显示三个UIViewControllers。 UIViewController1是我的主视图控制器,并有一个按钮。单击按钮以模态方式显示UIViewController2。 30秒后,UIViewController3以模态自动显示。我是否必须首先dimiss UIViewcontroller2,然后显示UIViewController3?。我在UIViewcontroller3上有一个Done按钮,然后点击它就会把我带回UIViewController1(主视图控制器)。我是否先从链中解除UIViewController2,然后在UIViewController1上执行alloc / init来显示它?我不希望在此过程中出现任何内存泄漏。
请帮忙。
答案 0 :(得分:0)
有两种主要方法可以做到这一点,其中一种方法,你提到过。在XCode中测试此场景后。
第一个涉及从最终视图控制器中解除所有模态视图控制器(第三个)。通过这样做,您不能使用动画来关闭视图控制器。如果你试图给它们制作动画,那么第二个就不会被解雇。 (当然,你可以用动画来解除第二个动画,但它会显示动画从第二个到第一个,而不是从第三个到第一个)
要执行此操作,您需要将第二个视图控制器作为属性传递给第三个视图控制器,以便您可以调用该行:
[[self parentVC] dismissModalViewControllerAnimated:NO];
请注意,parentVC是一个应设置为指向第二个视图控制器的属性
然后解雇时:
[self dismissModalViewControllerAnimated:NO];
[[self parentVC] dismissModalViewControllerAnimated:NO];
这会将您带回第一个视图控制器。
第二个,不是更好或更糟,但可能更容易编码,是在转到第三个之前解雇第二个视图控制器;再次,您可能不希望在从第二个到第三个的转换之间为视图控制器设置动画,但是可以从第三个到第一个进行动画处理。