在我的应用中,我为某些视图控制器提供了自定义的交互式过渡。我说的是{/ {1}}推送/弹出的交互式过渡。对于所有其他视图控制器,我想使用默认的iOS交互式过渡(从左向右滑动以返回)。
要激活我的自定义交互式转换,我必须实现UINavigationController
并实现UINavigationControllerDelegate
回调。这样很好!但是,如果在某些情况下我尝试返回animationControllerFor
,这意味着我不希望自定义过渡,而是使用默认过渡,它将完全禁用向后滑动!
重现该问题的代码:
nil
使用此class MainNavigationController: UINavigationController, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
func navigationController(_ navigationController: UINavigationController,
animationControllerFor operation: UINavigationControllerOperation,
from fromController: UIViewController,
to toController: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return nil
}
}
,您的所有后退滑动都将在此导航控制器内被禁用!我没想到这一点。因为文档中说明了返回值:
负责管理过渡动画的动画对象,如果要使用标准导航控制器过渡,则为nil。
有人知道我做错了什么还是错误吗?我在iOS 11和iOS 12 Beta上都尝试过。