如何连续关闭两个模态视图控制器*动画*?

moo*_*nce 11 animation uiviewcontroller ios

是的,我知道有完全相同的问题,但我想用双重动画来做这件事. 如何连续关闭2个模态视图控制器?

我的代码与上面的问题相同,

视图控制器A(在导航控制器中) - 模态视图控制器B - 模态视图控制器C.

这是伪代码

notification to B (as delegate)      // I changed order of this two lines, 
dismiss C *without* animation    // but it was same. 

(notification from C, in B)
dismiss B *with* animation
Run Code Online (Sandbox Code Playgroud)

如果我在解雇C时使用动画,它不起作用,B将不会被解雇,因为解雇C的动画正在播放.

问题是:如果有动画播放,我无法启动另一个动画.

我可以连续播放动画吗?

这不仅是解除动画的问题,它还可以应用于其他iOS动画.

PS:我想我可以使用计时器等到第一个动画结束,但它是脏的而且不稳定的方式,不是吗?

小谈:在我的节目中,

  • 答:文章列表视图
  • B:写文章视图
  • C:登录视图(如果用户未登录)

今天,我要添加联接视图,我要及时解雇3个视图lol我该如何帮助?

Bil*_*son 23

iOS 5.0及更高版本:

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这有效,如果你有:

A - starting view controller
M1 - modally presented by A
M2 - modally presented by M1
Run Code Online (Sandbox Code Playgroud)

将这行代码放在M2的视图控制器类中(以及一个按钮或其他任何东西来激活它),它将通过层次结构"到达"并告诉A dismissViewControllerAnimated:...

但是,Rahul Vyas的答案可能是一种更好的方法,适用于在"A"和最后一个Modal视图之间延伸的模态视图控制器数量未知的情况.


Rah*_*yas 7

您可以生成NSNotification,然后从第一个模态出现的根目录中解除第一个模态视图控制器,所有其他模式将自动消失.我在我的一个应用程序中完成了这个.