iOS - 如何在 Unwind Segue 中控制动画类型?

Posted

技术标签:

【中文标题】iOS - 如何在 Unwind Segue 中控制动画类型?【英文标题】:iOS - How to Control the Kind of Animation in an Unwind Segue? 【发布时间】:2015-08-15 03:54:41 【问题描述】:

我目前有一个有 3 个视图的应用

    屏幕 1 - 使用“显示”转场转到屏幕 2 屏幕 2 - 使用“模态”转场转到屏幕 3 屏幕 3

我在屏幕 1 中有一个展开转场,并从屏幕 2 和屏幕 3 调用此展开转场。

目前,当我从屏幕 3 调用屏幕 1 的展开转场时,它会作为一个正在关闭的模态视图进行动画处理。

是否可以让这种展开转场为标准“弹出”转场设置动画,例如当屏幕从正常导航堆​​栈中弹出时?

【问题讨论】:

如果您正在呈现一个模态视图控制器,它不再是导航控制器层次结构的一部分,因此无法获得您正在寻找的动画。此外,这违反了人机界面设计指南。顺其自然吧。 【参考方案1】:

我能够通过为模态视图创建不同的转场来完成我想要的。关于我的界面还有一些我不想解释的额外内容,但 Screen 3 现在取代了 Screen 2,没有模态 segue。然后,当我在屏幕 3 上调用展开转场时,它会使用屏幕 1 中的推送转场展开。

这是我在屏幕 2 和屏幕 3 之间使用的自定义转场:

-(void)perform 
    UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
    UIViewController *destinationController = (UIViewController*)[self destinationViewController];
    UINavigationController *navigationController = sourceViewController.navigationController;
    // Pop to root view controller (not animated) before pushing
    [navigationController popToRootViewControllerAnimated:NO];
    [navigationController pushViewController:destinationController animated:NO];

【讨论】:

以上是关于iOS - 如何在 Unwind Segue 中控制动画类型?的主要内容,如果未能解决你的问题,请参考以下文章

iOS从推送segue中检测unwind segue

Unwind Segue 在 iOS 8 中不起作用

Unwind segue 在 Swift 3 和 iOS 10 中不起作用

iOS 8 unwind segue 导致方向错误

适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue

如何以编程方式执行Unwind segue?