Ios 当退绕几步时,为退绕序列定制动画-问题和正确的方法是什么?

Ios 当退绕几步时,为退绕序列定制动画-问题和正确的方法是什么?,ios,objective-c,swift,animation,uikit,Ios,Objective C,Swift,Animation,Uikit,假设我有3个UIViewController的-A、B和C。AB和BC之间的转换是通过两种不同的动画转换来完成的-向前和向后(展开分段动画)子类化UIViewControllerTransitioningDelegate和UIViewControllerAnimatedTransitioning。只向前或向后一步的过渡效果很好,但当我尝试从C->A(如home按钮)中后退一步以上时,-B显示时没有动画,然后B->播放自定义动画,这看起来很奇怪视图将为链上的所有中间视图控制器(在我的示例B中)调用

假设我有3个
UIViewController
的-A、B和C。AB和BC之间的转换是通过两种不同的动画转换来完成的-向前和向后(展开分段动画)子类化
UIViewControllerTransitioningDelegate
UIViewControllerAnimatedTransitioning
。只向前或向后一步的过渡效果很好,但当我尝试从C->A(如home按钮)中后退一步以上时,-B显示时没有动画,然后B->播放自定义动画,这看起来很奇怪<代码>视图将为链上的所有中间视图控制器(在我的示例B中)调用。这几乎就像从C->A中展开一样,是这样完成的-C->B->A而不是C->A(注意,只有B->A动画播放,C->B动画不播放)。我想要的只是C->A(而不是B->A)动画,不显示任何其他中间视图控制器,也不调用它们的
viewwillbeen
方法。我想能够为C->A设置自定义的展开顺序动画。我该怎么做

注1:我不在UINavigationController中嵌入我的控制器,我也不希望嵌入,因为据我所知(如果我错了,请纠正我),对于不同步骤之间的不同自定义动画,它不是非常灵活,或者至少是可伸缩的。这两种方法我都不想用

注2:我已尝试覆盖

override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
<和>返回自定义SeGuE(<代码> UistRoyBoADSeGue</代码>派生类),用于从C-> A中解开。方法被调用,但动画正在启动,并在中间切换到B->动画转换委托动画(我已经设置为在B->A之间转换)。所以这也不起作用

我做错了什么?我很确定苹果的开发者们已经解决了这个问题,并且制作了一些API或者类似的东西。苹果的文档中没有任何关于如何使用自定义动画放松几步的内容

最后一件事是放松赛格几步后的工作是完美的,只是自定义动画不是或至少我不能让它工作


我们将非常感谢您的帮助

我理解您在问题中明确表示不想使用
UINavigationController
,我理解这一点。所以我们需要接受这个答案

但是我仍然会在这个场景中推广使用
UINavigationController
,因为它提供了很多跟踪导航的帮助,如果扩展,实际上非常灵活,甚至通过
UINavigationControllerDelegate
UIViewControllerAnimatedTransitioning
提供自定义转换

导航时,您可以使用
.pushToViewController()
.popViewController()
手动操作导航堆栈,或直接操作
.viewControllers
poptrootcontroller()
中的控制器列表


我曾在一款需要大量过渡的游戏中使用过
UIKit
UINavigationController
,我认为这需要大量定制,并且在导航方面仍然提供了大量帮助。

请查看今年WWDC的以下视频(大约30分钟)。底部还有一个指向示例代码的链接

不过,您可能需要等待iOS 9:)


祝你好运

你能添加你的代码,或者它的骨架吗?我可能对如何做你想做的事有个想法。这似乎在讨论你想做什么。特别是跳过中间控制器。骨架与中的相同。是的,这个解决方案将解决我的问题(使用UINavigationController),我只是想知道是否还有其他方法,我不想让我的一个导航控制器掌握一切,我想尽可能地解耦导航控制器,包括他们的事务。是的,你是对的,我知道添加
UINavigationController
会为我解决这个问题,我甚至可以继承它并覆盖
segueforunbindingtoviewcontroller
,以返回自定义的Unwind Segue以在C和A之间设置动画,但这会使代码过于复杂,使导航控制器成为所有设备的主人。它必须了解应用程序中的每个控制器