是否可以使用NavigationBarViewController作为UINavigationController来推送堆栈上的视图控制器

时间:2016-02-25 21:44:18

标签: ios swift cosmicmind

我正在使用https://github.com/CosmicMind/Material替换UINavigationControllers和其他iOS标准UI类,特别是我坚持使用NavigationBarViewController。我知道在引擎盖下它使用父/子控制器设置来呈现新的视图控制器本身,但我无法弄清楚如何只有基本导航VC推入堆栈,左侧的后退按钮返回。浏览NavigationBarViewController的源代码似乎没有办法做到这一点。是否可以使用NavigationBarViewController进行操作?

1 个答案:

答案 0 :(得分:0)

要转换mainViewController,它是NavigationBarViewController的主体,您可以使用

transitionFromMainViewController

方法。它支持动画选项,而不是MoveIn或Push动画。

为此,您需要使用MaterialAnimation 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堆栈,可以完成您要求的所有操作。

更新

在材质1.36.0中,有两个新类,NavigationBar和NavigationController。 NavigationController是UINavigationController的子类,因此在项目堆栈上推送和弹出UIViewControllers的所有功能都是相同的,同时能够轻松自定义控制器的外观。

示例App项目显示了如何使用它。