如何连续关闭两个模态视图控制器*动画*?
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.它的应用感觉更好
以上是关于如何连续关闭两个模态视图控制器*动画*?的主要内容,如果未能解决你的问题,请参考以下文章