【发布时间】:2015-08-18 18:26:50
【问题描述】:
假设我有 3 个UIViewController - A、B 和 C。AB 和 BC 之间的过渡是通过两种方式的不同动画过渡完成的 - 向前和向后(展开 segue动画)子类化UIViewControllerTransitioningDelegate 和UIViewControllerAnimatedTransitioning。仅向前或向后一步的过渡效果很好,但是当我尝试从 C->A (如主页按钮)退后多步时 - B 显示时没有动画,然后播放 B->A 自定义动画,这看起来很奇怪。 viewWillApper 为链上的所有中间视图控制器调用(在我的示例 B 中)。几乎就像以这种方式从 C->A 展开 - C->B->A 而不是 C->A (请注意 - 只播放 B->A 动画,不播放 C->B 动画玩过)。我想要的只是 C->A(不是 B->A)动画,而不显示任何其他中间视图控制器或调用它们的 viewWillAppear 方法。我希望能够为 C->A 设置自定义展开转场动画。我怎样才能做到这一点?
注意 1:我没有将我的控制器嵌入 UINavigationController 并且我不希望这样做,因为据我所知(如果我错了,请纠正我)它不是很灵活或至少可扩展为不同的自定义动画之间不同的步骤。两种方式我都不想使用它。
注意 2:我试图覆盖
override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
在 A 中并返回自定义 segue(UIStoryboardSeguederived 类)以从 C->A 展开。该方法被调用,但动画正在开始,并在中间切换到 B->A 动画转换委托动画(我已设置为在 B->A 之间转换)。所以这也不起作用。
我做错了什么?我很确定 Apple 开发人员已经解决了这个问题并制作了某种 API 或类似的东西。 Apple 文档中没有关于如何使用自定义动画来放松几步。
最后一件事 unwind segue 退后几步是完美的,只是自定义动画不是或者至少我不能让它工作。
我们将不胜感激任何帮助。
【问题讨论】:
-
您可以在某处添加您的代码或它的骨架吗?我可能知道如何做你想做的事
-
这似乎在讨论您要做什么。特别是跳过中间控制器。 stackoverflow.com/questions/26785511/…
-
骨架和link中的一样。是的,这个解决方案将解决我的问题(使用 UINavigationController),我只是想知道是否有另一种方法,我不想让我的一个导航控制器掌握一切,我想尽可能地解耦导航控制器,包括他们的交易。
标签: ios objective-c swift animation uikit