如何实现自定义NavigationViewController?

时间:2015-04-01 15:30:15

标签: ios uinavigationcontroller

我想实现一个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在动画块中执行。

0 个答案:

没有答案