iphone - 两个模态视图 Controller 之间的动画转换

标签 iphone objective-c modalviewcontroller presentmodalviewcontroller

我正在尝试在两个不同的事件模态视图 Controller 之间切换并尝试制作流畅的动画。理想情况下,我希望动画看起来就像新模态视图正在成为当前模态视图之上的模态视图一样。

为了在我的应用程序中保持一致,我需要限制在任何给定时间只显示一层模态视图 Controller 。

目前我只是让现有的模态视图消失,没有动画,然后在 RootController 上为下一个模态视图设置动画,但这看起来不太好。

谢谢

最佳答案

您可以使用默认转换在第一个 Model View Controller 上显示第二个 Model View Controller 。听起来您的第二个模型 View 正在与您的第一个模型 View 相同的 View Controller 中分配和初始化。如果是这种情况,请考虑重构您的代码,以便让第一个 Model View Controller 呈现第二个模态视图 Controller 。这样做会像您想要的那样在另一个上显示一个。

如果您需要将两个模态视图 Controller 的表示代码保存在同一个 Root View Controller 中,您可能需要创建一个委托(delegate)方法。这会将消息从第一个模态视图 Controller 发送回呈现它的 Root View Controller ,并传递对第一个模态视图 Controller 的引用。接下来,使用此引用告诉第一个模态视图 Controller 在其上呈现第二个模态视图 Controller 。

我肯定会推荐前一种解决方案,因为它在逻辑上更清晰,引入保留周期的可能性更小。

针对您的澄清:

要在两者之间转换,请尝试:

在您的 ModalViewControllerOne 实例中,该实例已从上一个 session 中显示:

self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self dismissModalViewControllerAnimated:YES];

在你的 rootViewController 的 -viewDidAppear:

ModalViewControllerTwo *modalViewControllerTwo = [[ModalViewControllerTwo alloc] init];
modalViewControllerTwo.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[rootViewController presentModalViewController:modalViewControllerTwo animated:YES];

这样做的想法是将第一个模态视图 Controller 交叉溶解回 Root View Controller ,然后立即将新的模态视图 Controller 交叉溶解回屏幕上。

如果只是启动画面之间的 View 不同,您可以使用一个具有逻辑的 View Controller 来代替两个 View Controller ,该逻辑仅根据输入的 URL 将一个 View 换成另一个 View ,并在以下情况下使用动画在 View 之间交换。

关于iphone - 两个模态视图 Controller 之间的动画转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014183/

相关文章:

iphone - 模拟器在 arc4random-method 中卡住

ios - 实现接收推送通知操作的委托(delegate)

ios - ReactiveCocoa subscribeNext 没有检查

ios - 使用分段控件在 UITabBarController 中以模态方式呈现导航 View Controller

iphone - 我在作业中得到不兼容的类型?

iphone - 将 UIView 的 subview 放在其 CALayer 前面?

iphone - 带按钮和错误处理的照片浏览器

ios - iOS开发中如何使用离线缓存?

iOS - 在模态视图 Controller 上设置 UISwitch 开/关状态

ios - 向 Master-Detail 应用程序添加模式加载 View (在 applicationDidBecomeActive 方法中)