navigationController 中的两个不同的自定义转换
two different custom transitions in a navigationController
我正在尝试在导航控制器中进行两种不同的自定义过渡(一种淡入淡出,一种从顶部滑动)。
第一次过渡效果很好,但弹出时过渡效果很疯狂。
我猜 navigationController.delegate 是关键,但我无法自己弄清楚。
任何帮助将不胜感激
非常感谢
*********************************** IOS14 问题更新 ****** ************************************
您好,
@Vlad 用于设置委托的解决方案非常有效,谢谢。
但最近在 IOS14 中,当在导航后退按钮上检测到长按手势时出现堆栈菜单(允许用户在导航控制器的视图控制器堆栈中导航)。
因此,当弹出两个或更多控制器时,导航控制器委托设置为错误的控制器。
我再次请求您的支持;)
你的起始状态是 VC A。
在 viewDidLoad 之后,navigationController?.delegate 被设置为 VC A,它使用 anim1。
当你推送到 B 时,你将 navigationController?.delegate 设置为 B,它使用 anim2.
当你从C弹出到B时,anim2被用作navigationController?.delegate是VCB。
当你从 B 弹出到 A 时,使用 anim2 因为 navigationController?.delegate 是 still VC B.
当你 pop B 时,navigationController?.delegate 被设置为 nil 因为 VC B 的实例被销毁了。
这就是为什么当您再次尝试按下 B 时,会使用默认动画。
两条重要的信息是:
- viewDidLoad 仅在视图加载完成时调用一次,而不是在弹出后再次出现时调用。
- navigationController?.delegate 只能指向一个委托。
我正在尝试在导航控制器中进行两种不同的自定义过渡(一种淡入淡出,一种从顶部滑动)。
第一次过渡效果很好,但弹出时过渡效果很疯狂。 我猜 navigationController.delegate 是关键,但我无法自己弄清楚。 任何帮助将不胜感激 非常感谢
*********************************** IOS14 问题更新 ****** ************************************
您好, @Vlad 用于设置委托的解决方案非常有效,谢谢。
但最近在 IOS14 中,当在导航后退按钮上检测到长按手势时出现堆栈菜单(允许用户在导航控制器的视图控制器堆栈中导航)。
因此,当弹出两个或更多控制器时,导航控制器委托设置为错误的控制器。
我再次请求您的支持;)
你的起始状态是 VC A。 在 viewDidLoad 之后,navigationController?.delegate 被设置为 VC A,它使用 anim1。 当你推送到 B 时,你将 navigationController?.delegate 设置为 B,它使用 anim2.
当你从C弹出到B时,anim2被用作navigationController?.delegate是VCB。 当你从 B 弹出到 A 时,使用 anim2 因为 navigationController?.delegate 是 still VC B.
当你 pop B 时,navigationController?.delegate 被设置为 nil 因为 VC B 的实例被销毁了。 这就是为什么当您再次尝试按下 B 时,会使用默认动画。
两条重要的信息是:
- viewDidLoad 仅在视图加载完成时调用一次,而不是在弹出后再次出现时调用。
- navigationController?.delegate 只能指向一个委托。