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
需要设置为ElasticTransition
,modalPresentationStyle
需要设置为.Custom
。但是,如果使用弹性转换将视图控制器推送到导航控制器堆栈,则只需要将 navigationController?.delegate
设置为 ElasticTransition
.
经过一番聊天,@Harish 告诉我他使用了推送转接。然而,prepareForSegue
中的代码是当一个人 模态 呈现视图控制器时的设置代码。这可能是 UITransitionContextFromViewControllerKey
returns 为零的原因。所以我认为解决方案是将 navigationController
的 delegate
设置为 ElasticTransition
某处,并删除 prepareForSegue
.
中的代码
因此,我正在使用 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
需要设置为ElasticTransition
,modalPresentationStyle
需要设置为.Custom
。但是,如果使用弹性转换将视图控制器推送到导航控制器堆栈,则只需要将 navigationController?.delegate
设置为 ElasticTransition
.
经过一番聊天,@Harish 告诉我他使用了推送转接。然而,prepareForSegue
中的代码是当一个人 模态 呈现视图控制器时的设置代码。这可能是 UITransitionContextFromViewControllerKey
returns 为零的原因。所以我认为解决方案是将 navigationController
的 delegate
设置为 ElasticTransition
某处,并删除 prepareForSegue
.