私はUINavigationControllerセットアップを持っており、ビューのポップ/プッシュにカスタムアニメーションを使用することを想定しています。以前はカスタムトランジションを使用していましたが、この場合、実際には 'from'と 'to'にはゼロ値が見つかりませんUIViewControllers。UIViewControllerAnimatedTransitioningデリゲート内で、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
}
}
と非常によく似ています以上を使用して
、両方fromVCとtoVCあるnilの
それはどのようにtransitionContextは「から」とUIViewControllers「から」に有効なポインタを持っていない可能性がありますか?
:手のひらを顔に当てる:ハ、ありがとう。私はコマンドラインでデバッグしていましたが、デバッグウィンドウも見て、それはVCのためのnilを示したが、たぶんそれはちょうど面白く見えたオプションのためにおそらく誓った。まだSwiftに慣れています。 – MobileVet
心配はいりません!シンプルなタイプミスは、見逃しやすいです。 – Mackarous
ありがとうございました。まったく同じ問題がありましたxD – coolcool1994