我想实现一个NavigationViewController,就像UINavigationViewController一样,但没有navigationBar和自定义Push效果。
我知道我应该将视图控制器添加到我的NavigationController作为ChildViewController,并将他们的视图添加到我的NavigationController视图中。但是,我无法很好地处理生命周期方法,这意味着当我推送和弹出ViewController时,viewWillAppeaer
viewDidDisapper
和其他方法应该在适当的时候调用。
我在popViewController:
中尝试了这个:
// life cycle
currentVC.viewWillDisappear(animated)
previousVC.viewWillAppear(animated)
currentVC.willMoveToParentViewController(nil)
UIView.animateWithDuration(self.durationOfPop, delay: 0, options: UIViewAnimationOptions.CurveEaseOut,
animations: { () -> Void in
// animations
let width = currentVC.view.frame.width
currentVC.view.frame = self.view.frame.rectByOffsetting(dx: width, dy: 0)
previousVC.view.frame = self.view.bounds
}) { (finished) -> Void in
if finished {
// life cycle
currentVC.view.removeFromSuperview()
currentVC.removeFromParentViewController()
currentVC.didMoveToParentViewController(nil)
previousVC.viewDidAppear(animated)
//
self.viewControllers.removeLast()
}
}
我明确地调用viewWillDisappear:
来调用它。但是当VC有子VC时它会出现问题。
我也尝试了transformFromViewController:toViewController...
方法。它会让viewWillAppear
在动画块中执行。