我有一个导航控制器,它是自己的委托,也可以处理动画过渡:
class NavController: UINavigationController, UINavigationControllerDelegate, UIViewControllerAnimatedTransitioning {
func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if operation == .push && toVC is GalleryController {
return self
}
return nil
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
print("Animation beginning")
...
}
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?)
-> TimeInterval {
print("transition duration")
return TimeInterval(0.2)
}
}
这与lookup_mporforward中的EXC_BAD_ACCESS崩溃,由pushViewController直接调用。
调用transitionDuration()方法,但不调用animateTransition()。
如果我执行以下任何操作,问题就会消失:
这是违反直觉的。你知道为什么这可能会出错吗?
有关调试的更多信息: