我试图在两个不同的活动模态视图控制器之间切换并尝试平滑动画。理想情况下,我希望动画看起来就像新模态视图正在成为当前模态视图的模态视图。
为了在我的应用程序中保持一致性,我需要限制在任何给定时间显示的一层模态视图控制器。
目前我只有现有的Modal View dismiss没有动画,然后通过RootController动画下一个Modal View,但这看起来并不好。
由于
答案 0 :(得分:7)
您可以使用默认转换在第一个上显示第二个模型视图控制器。听起来您的第二个模型视图在与第一个模型视图相同的视图控制器中进行分配和初始化。如果是这种情况,请考虑重构代码,以便让第一个模型视图控制器显示第二个模态视图控制器。这样做会像你想要的那样在另一个上面显示。
如果需要在同一根视图控制器中保留用于显示两个模态视图控制器的代码,则可能需要创建委托方法。这会将消息从第一个模态视图控制器发送回呈现它的根视图控制器,并将引用传递给第一个模态视图控制器。接下来,使用此引用告诉第一个模态视图控制器在其上显示第二个模态视图控制器。
我肯定会推荐前一种解决方案,因为它在逻辑上更清晰,引入保留周期的可能性更小。
回应你的澄清:
要在两者之间转换,请尝试:
在您之前会话中已显示的ModalViewControllerOne
实例中:
self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self dismissModalViewControllerAnimated:YES];
在rootViewController的-viewDidAppear:
ModalViewControllerTwo *modalViewControllerTwo = [[ModalViewControllerTwo alloc] init];
modalViewControllerTwo.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[rootViewController presentModalViewController:modalViewControllerTwo animated:YES];
这样做的想法是将第一个模态视图控制器交叉溶解回根视图控制器,然后立即将新的模态视图控制器交叉溶解回屏幕。
如果它只是启动屏幕之间不同的视图,你可以代替两个视图控制器,让一个视图控制器具有逻辑,根据输入的URL简单地为另一个视图交换一个视图,并在使用动画时使用动画在视图之间交换。