UITransitionContextFromViewControllerKey 返回 nil

UITransitionContextFromViewControllerKey is returning nil

因此,我正在使用 Elastic Transition pod (Cocoapods),当我转换时我的应用程序崩溃了,因为 UITransitionContextFromViewControllerKey 键是 nil。我真的很困惑为什么这个值会是 nil。解决此错误的可能原因和解决方案是什么?

下面是我过渡到下一个视图控制器时的一些代码:

func handleTap(sender: AnyObject) {
    transition.sticky = true
    transition.transformType = .TranslateMid
    transition.showShadow = true
    transition.edge = .Left
    transition.startingPoint = sender.center
    performSegueWithIdentifier("mySegue", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    segue.destinationViewController.transitioningDelegate = transition
    segue.destinationViewController.modalPresentationStyle = .Custom
}

然后,当它尝试转换时,我的应用程序崩溃并抱怨这行代码(在 Elastic Transition 中)正在返回 nil:

transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!

根据ElasticTransition Github page,如果一个视图控制器被模态呈现为弹性过渡,那么目标视图控制器的transitioningDelegate需要设置为ElasticTransitionmodalPresentationStyle需要设置为.Custom。但是,如果使用弹性转换将视图控制器推送到导航控制器堆栈,则只需要将 navigationController?.delegate 设置为 ElasticTransition.

经过一番聊天,@Harish 告诉我他使用了推送转接。然而,prepareForSegue 中的代码是当一个人 模态 呈现视图控制器时的设置代码。这可能是 UITransitionContextFromViewControllerKey returns 为零的原因。所以我认为解决方案是将 navigationControllerdelegate 设置为 ElasticTransition 某处,并删除 prepareForSegue.

中的代码