UITransitionContextFromViewControllerKey возвращает ноль
Итак, я использую модуль Elastic Transition (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)!
1 ответ
Согласно странице ElasticTransition Github, если контроллер представления представлен модально с упругим переходом, то контроллер представления назначения transitioningDelegate
должен быть установлен в ElasticTransition
а также modalPresentationStyle
в .Custom
, Однако, если контроллер представления помещается в стек контроллера навигации с использованием упругого перехода, то только navigationController?.delegate
должен быть установлен в ElasticTransition
,
После некоторого разговора @Harish сказал мне, что он использует толчок. Тем не менее, код в prepareForSegue
это код установки, когда каждый представляет контроллер вида модально. Это, вероятно, причина, почему UITransitionContextFromViewControllerKey
возвращает ноль Поэтому я считаю, что решение состоит в том, чтобы установить navigationController
"s delegate
в ElasticTransition
где-нибудь, и удалите код в prepareForSegue
,