0

У меня есть установка UINavigationController, и я ожидаю использовать пользовательскую анимацию для pop/push-просмотров с ней. Я использовал пользовательские переходы прежде, чем без проблем, но в этом случае я нахожу нулевые значения в своих «от» и «до» UIViewControllers.Внутри UIViewControllerAnimatedTransitioning delegate, переходContext.fromViewController is 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 равны нулю

Как это возможно, что transitionContext не имеет действительных указателей на «до» и «от» UIViewControllers?

ответ

3

вы используете UITransitionContextFromViewKey но вы должны использовать UITransitionContextFromViewControllerKey

же для "к"

+0

: Facepalm: Ха, спасибо. Я отлаживал командную строку И, глядя в окно отладки, поклялся, что он показал ноль для венчурных капиталистов, но, вероятно, из-за опций это просто выглядело забавно. Все еще привыкаешь к Свифт. – MobileVet

+0

Не беспокойтесь! Простая опечатка, легко пропустить. – Mackarous

+0

большое спасибо, у меня была такая же проблема xD – coolcool1994