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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何连续关闭两个模态视图控制器*动画*?相关的知识,希望对你有一定的参考价值。

是的,我知道有完全相同的问题,但我想用双重动画来做这件事。 How to Dismiss 2 Modal View Controllers in Succession?

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

视图控制器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

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

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

我可以连续播放动画吗?

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

P.S:我想我可以使用计时器等到第一个动画结束,但它很脏而且不稳定,不是吗?

小谈:在我的节目中,

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

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

答案

iOS 5.0及更高版本:

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

这有效,如果你有:

A - starting view controller
M1 - modally presented by A
M2 - modally presented by M1

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

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

另一答案

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

另一答案

如果希望视图关闭模态视图,可以使用[self dismissModalViewControllerAnimated:(BOOL)]。如果你在两个控制器中调用它,它应该工作。我自己没试过,但似乎合乎逻辑。

我必须补充一点,如果你需要在一行中呈现多个模态视图,你应该考虑为其中一些使用不同的范例。例如,登录视图可以是警报视图而不是模态视图控制器。

另一答案

我遇到了类似的问题,试图让动画连续工作。我一直想尝试以下方法:

如果你在调用performSelectorOnMainThread的内部调用第二个动画(即dimiss B)怎么办?这会让我觉得第二个动画会被迫等待第一个动画完成。

我还没有测试过它。祝你好运 - 我对你提出的解决方案非常好奇。

另一答案

您可以使用删除2视图

[AviewController dismissModalViewControllerAnimated:YES];

这里AviewController是A的对象。希望这会对你有所帮助。

另一答案

[self dismissModalViewControllerAnimated:(BOOL)]不起作用。第二个动画不会触发。在iOS 5中,您可以使用[self dismissViewControllerAnimated:YES completion:^{}];但不向后兼容4.0。我只是成功调用一个委托方法,在呈现新模式之前关闭模态视图控制器。

另一答案

这是我的工作,我有A-> B,然后是B上的容器视图“C”。然后我想让C解雇回A,

对我有用的最佳方式是在视图C中调用此操作

self.presentingViewController?.dismiss(animated: true, completion: {})
self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: {})

这解雇了模态C,然后以同步顺序解散B.它的应用感觉更好

以上是关于如何连续关闭两个模态视图控制器*动画*?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能呈现一个模态视图控制器,并带有默认的关闭动画?

如何自定义模态视图控制器呈现动画?

我应该在关闭视图之前关闭键盘吗?

如何以模态方式将视图添加到不在视图层次结构中的另一个视图 iOS

在呈现模态视图时显示 UITabBar

关闭两个模态(表格)视图控制器