Iphone 驳回多模态视图

Iphone 驳回多模态视图,iphone,objective-c,modal-dialog,Iphone,Objective C,Modal Dialog,我的应用程序从主视图中显示一个模式视图(a),让用户进行选择。当他们做出选择时,会在第一个模态视图(a)的顶部打开第二个模态视图(B) 当我处理完第二个模态视图(B)并想取消它时,我想同时取消第一个模态视图(A)和第二个模态视图(B),因为我不再需要用户返回该模态视图(A) 我唯一想到的是: [self.parentViewController.parentViewController.parentViewController. dismissModalViewControllerAnimate

我的应用程序从主视图中显示一个模式视图(a),让用户进行选择。当他们做出选择时,会在第一个模态视图(a)的顶部打开第二个模态视图(B)

当我处理完第二个模态视图(B)并想取消它时,我想同时取消第一个模态视图(A)和第二个模态视图(B),因为我不再需要用户返回该模态视图(A)

我唯一想到的是:

[self.parentViewController.parentViewController.parentViewController. dismissModalViewControllerAnimated:YES];

它是有效的,但它看起来不正确。这样做可以吗,还是有一种更为普遍接受的方法呢?

我不认为你的方法是错误的。它建议:


如果连续显示多个模态视图控制器,从而构建模态视图控制器堆栈,则在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈中该子视图控制器上方的所有视图控制器。当这种情况发生时,只有最上面的视图以动画方式被取消;只需从堆栈中删除任何中间视图控制器。最上面的视图使用其模式转换样式关闭,这可能与堆栈中较低的其他视图控制器使用的样式不同。

好的,谢谢。将这么多parentViewController语句串在一起使其工作起来看起来很奇怪。
(UIApplication.sharedApplication().delegate! as! AppDelegate).navigationController?.viewControllers.first?.dismissViewControllerAnimated(true, completion: nil)