Ios 是否可以将NavigationBarViewController用作UINavigationController以在堆栈上推送视图控制器

Ios 是否可以将NavigationBarViewController用作UINavigationController以在堆栈上推送视图控制器,ios,swift,cosmicmind,Ios,Swift,Cosmicmind,我正在用NavigationBarViewController替换UINavigationController和其他iOS标准UI类,尤其是NavigationBarViewController。我知道,在引擎盖下,它使用父/子控制器设置在自身上显示新的视图控制器,但我不知道如何将基本导航VC推到堆栈上,并在左侧使用后退按钮返回。浏览NavigationBarViewController的源代码似乎没有办法做到这一点。是否可以使用NavigationBarViewController进行转换?要

我正在用NavigationBarViewController替换UINavigationController和其他iOS标准UI类,尤其是NavigationBarViewController。我知道,在引擎盖下,它使用父/子控制器设置在自身上显示新的视图控制器,但我不知道如何将基本导航VC推到堆栈上,并在左侧使用后退按钮返回。浏览NavigationBarViewController的源代码似乎没有办法做到这一点。是否可以使用NavigationBarViewController进行转换?

要转换作为NavigationBarViewController主体的mainViewController,可以使用

transitionFromMainViewController
方法。但是,它支持动画选项,而不支持移动或推送动画

为此,需要使用MaterialImation API中提供的转换方法

例如:

let vc: HashtagListViewController = HashtagListViewController()
    vc.view.layer.addAnimation(MaterialAnimation.transition(.MoveIn, direction: .Right), forKey: kCATransitionFromRight)

    navigationBarViewController?.transitionFromMainViewController(vc)
基本上,您所做的是点击UIViewController.view.layer的过渡动画

如果你不想去做那件事,那么

transitionFromMainViewController
提供了一些很好的开箱即用的动画,您可以使用

在Material的未来版本中,将有一个完整的NavigationViewController堆栈,可以满足您的所有要求

更新 在Material中,有两个新类,NavigationBar和NavigationController。NavigationController是UINavigationController的一个子类,因此在项目堆栈上推送和弹出UIViewController的所有功能都是相同的,同时可以轻松定制控制器的外观


示例应用程序项目显示了如何使用此功能

我明白了,是的,我也想过。除了动画,我还真的希望有导航堆栈和“后退”按钮功能。最终的目标是摆脱UINavigationController,全力以赴:)是的,是时候把它放进去了。每个人都想要:)这个周末,这将是我的项目。谢谢你的支持。