Ios 关闭UIViewController还是只初始化最上面的?

Ios 关闭UIViewController还是只初始化最上面的?,ios,uiviewcontroller,Ios,Uiviewcontroller,我创建了一个iPad应用程序,其中有三个自定义UIViewController。 VC1,VC2,VC3。 它就像一个层次结构,所以你必须一步一步地完成每个阶段 因此,您不能直接从VC1跳到VC3 但如果您在VC3中,则可以直接返回VC2或VC1。 在VC3上,我可以调用dismissViewControllerAnimated来演示VC2-cool 但是如果我想从VC3跳回到VC1,最好的方法是什么? 是否有一个原因可以解释为什么只对VC1使用“alloc and init”然后present

我创建了一个iPad应用程序,其中有三个自定义UIViewController。 VC1,VC2,VC3。 它就像一个层次结构,所以你必须一步一步地完成每个阶段

因此,您不能直接从VC1跳到VC3

但如果您在VC3中,则可以直接返回VC2或VC1。 在VC3上,我可以调用dismissViewControllerAnimated来演示VC2-cool

但是如果我想从VC3跳回到VC1,最好的方法是什么?
是否有一个原因可以解释为什么只对VC1使用“alloc and init”然后
presentViewController:animated:completion

是的,因为VC1已经存在,所以它是不好的,您将有一个副本。 您可以使用它从VC3转到VC1

[self.presentingViewController.presentedViewController dismissModalViewControllerAnimated:YES];

是的,这将是非常糟糕的alloc init另一个VC1

只需让VC1代表您的VC3即可

当您想从VC3中删除VC1和VC2时,只需调用一个委托方法,如“DismissAllVC” 在VC1中,只需调用DismissAllVC方法即可

- (void)dismissModalViewControllerAnimated:(BOOL)animated
这将驳回VC2和VC3,因为他们是VC1的孩子

这就是我要做的,因为父视图控制器应该始终负责子视图的关闭


希望这会有所帮助;)

谢谢你的帮助。不幸的是,这没有帮助。如果我记录“self.presentedViewController”或“self.parentViewController”属性,我会得到null。为什么?从VC3解聘到VC1现在起作用了。但不像您在“[self.presentedViewController.presentedViewController dismissModalViewControllerAnimated:YES];”中所说的那样。当我使用“[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]”时,它会起作用。。。谢谢我上面的问题就是存在的。我应该为此创建一个新线程吗?嗨,不,我的代码错了,很抱歉,我会编辑它:)不要担心创建一个新线程,这是不必要的。如果此代码有效,您能否将此答案标记为已接受,以便访问此线程的人找到正确的代码?