navigationController中的两个不同的自定义过渡

时间:2018-10-04 20:39:28

标签: animation uinavigationcontroller delegates swift4 custom-transition

我正在尝试在导航控制器中进行两种不同的自定义过渡(一种淡入淡出和一种从顶部滑动)。 enter image description here

第一次过渡效果很好,但是当弹出时,过渡表现得很疯狂。 我猜想navigationController.delegate是关键,但我自己无法弄清楚。 任何帮助将不胜感激 非常感谢

1 个答案:

答案 0 :(得分:0)

您的起始状态为VCA。 在viewDidLoad之后,将navigationController?.delegate设置为使用anim1的VCA。 推到B时,您正在将navigationController?.delegate设置为使用anim2的B。

当您从C弹出到B时,anim2用作navigationController?。委托是VCB。 当您从B弹出到A时,会使用anim2,因为navigationController?.delegate 仍然是VC B 。

弹出B时,因为VC B的实例已损坏,所以navigationController?.delegate设置为 nil 。 这就是为什么当您再次尝试按B时会使用默认动画的原因。

两条重要的信息是:

  1. viewDidLoad仅在视图完成加载时调用一次,而不会在弹出窗口后再次出现。
  2. navigationController?.delegate只能指向一个委托。