0

私はUINavigationControllerセットアップを持っており、ビューのポップ/プッシュにカスタムアニメーションを使用することを想定しています。以前はカスタムトランジションを使用していましたが、この場合、実際には 'from'と 'to'にはゼロ値が見つかりませんUIViewControllersUIViewControllerAnimatedTransitioningデリゲート内で、transitionContext.fromViewControllerがnilである

私のセットアップは、このSO Post

カスタムDataEntryViewController

class DataEntryViewController : UIViewController, DataEntryViewDelegate, UINavigationControllerDelegate { 

    func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {   
     let animator = DataEntryTransitionAnimator() 
     animator.duration = 2 
     return animator 
    } 
} 

カスタムBaseTransitionAnimator

class BaseTransitionAnimator : NSObject, UIViewControllerAnimatedTransitioning { 

    var duration : NSTimeInterval = 0.5    // default transition time of 1/2 second 
    var appearing : Bool = true      // is the animation appearing (or disappearing) 

    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval { 
     return duration 
    } 

    func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 
     assert(true, "animateTransition MUST be implemented by child class") 
    } 
} 

サブクラス化TransitionAnimator

class DataEntryTransitionAnimator : BaseTransitionAnimator { 

    override func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 
     let containerView = transitionContext.containerView() 
     let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewKey) as! DataEntryViewController 
     let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewKey) as! DataEntryViewController 
     let duration = transitionDuration(transitionContext) 

     // do fancy animations 
    } 
} 
と非常によく似ています以上を使用して

、両方fromVCtoVCあるnilの

それはどのようにtransitionContextは「から」とUIViewControllers「から」に有効なポインタを持っていない可能性がありますか?

答えて

3

あなたがUITransitionContextFromViewKeyを使用しているが、あなたが同じUITransitionContextFromViewControllerKey

を使用する必要がある "を"

+0

:手のひらを顔に当てる:ハ、ありがとう。私はコマンドラインでデバッグしていましたが、デバッグウィンドウも見て、それはVCのためのnilを示したが、たぶんそれはちょうど面白く見えたオプションのためにおそらく誓った。まだSwiftに慣れています。 – MobileVet

+0

心配はいりません!シンプルなタイプミスは、見逃しやすいです。 – Mackarous

+0

ありがとうございました。まったく同じ問題がありましたxD – coolcool1994

関連する問題