I'm working on replacing UINavigationControllers and other iOS standard UI classes with https://github.com/CosmicMind/Material and am stuck with NavigationBarViewController in particular. I know that under the hood it uses parent/child controller setup to present new view controllers on itself but I can't figure out how can I have just basic navigation VC push onto the stack with a back button on the left to go back. Going through the source code of NavigationBarViewController doesn't seem like there is a way to do it. Is it possible to do it with NavigationBarViewController?
To transition the mainViewController, which is the body of the NavigationBarViewController, you can use the
transitionFromMainViewController
method. It supports animation options, though, not the MoveIn or Push animation.
In order to do that, you need to use the transition method that is available in the MaterialAnimation API.
Example:
let vc: HashtagListViewController = HashtagListViewController()
vc.view.layer.addAnimation(MaterialAnimation.transition(.MoveIn, direction: .Right), forKey: kCATransitionFromRight)
navigationBarViewController?.transitionFromMainViewController(vc)
Basically what you are doing is tapping into the transition animation for the UIViewController.view.layer.
If you do not want to go to that effort, the
transitionFromMainViewController
offers some nice out of the box animations that you can use.
In a future version of Material, there will be an entire NavigationViewController Stack that will do all that you are asking.
In Material 1.36.0, there are two new classes, NavigationBar and NavigationController. NavigationController is a subclass of UINavigationController, so all the features for pushing and popping UIViewControllers on the stack of items is the same, while getting the ability to customize the controller's look and feel with ease.
The example App project shows how to use this.