如何为rootViewController调用UINavigationControllerDelegate委托方法

时间:2017-07-10 14:08:44

标签: ios swift uinavigationcontroller

我使用下面的委托方法在我的应用中显示动画。

func navigationController(_ navigationController: UINavigationController,
            animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController,
            to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?

但是,上面的方法并没有调用navigationController的rootViewController。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

调用您引用的方法来设置过渡动画。但是,rootViewController被添加到navigationController而没有任何动画,因为之前没有要转换的视图控制器。因此,不会调用委托方法。

即使您不使用指定rootViewController的便捷初始化程序,而是手动推送rootViewController,为true参数指定animated:,也是如此。您会注意到即使在这种情况下,navigationController也会在没有动画的情况下推送rootViewController(从navigationController(:,willShow:,animated:)调用animated参数设置为false开始。

AFAIK,无法过渡动画rootViewController。

另一种解决方案可能是实施navigationController(:, willShow:, animated:),检查是否self.viewControllers.first == viewController,然后手动设置viewController.view动画。