Программно сообщить моему менеджеру по переходу, откуда я пришел или куда я иду? Быстрый

Итак, у меня есть этот код в моей функции animateTransition:

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
      // Getting the reference to container, toView & fromView
      let container = transitionContext.containerView
      let fromView = transitionContext.view(forKey: .from)! // Force unpacked
      let toView = transitionContext.view(forKey: .to)! // Force unpacked

      // Setup for the 2d animation
      let offScreenRight = CGAffineTransform(translationX: container.frame.width, y: 0)
      let offScreenLeft = CGAffineTransform(translationX: -container.frame.width, y: 0)

      // Start the toView to the right of the screen
      container.addSubview(toView)
      container.addSubview(fromView)

      // Get the duration of the animation
      let duration = self.transitionDuration(using: transitionContext)

      // Perform the animation
      UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, animations: {

        fromView.transform = offScreenLeft
        toView.transform = .identity

      }, completion: { finished in

        // Tell our transitionContext object that we've finished animating
        transitionContext.completeTransition(true)
      })

    }

И если я пытаюсь представить контроллер представления с помощью менеджера переходов, который содержит эту функцию, он не может найти представление. Если я пытаюсь отклонить, он не может найти для просмотра. Как я могу сказать ему, откуда оно исходит в настоящем, и как я могу сказать ему, куда оно должно идти при увольнении?


person Victor Pedersen    schedule 13.05.2020    source источник


Ответы (1)


Итак, я нашел решение. Причина, по которой я не смог получить доступ к fromView или toView в зависимости от отклонения или присутствия, заключалась в том, что я позвонил:

let fromView = transitionContext.view(forKey: .from)! 
let toView = transitionContext.view(forKey: .to)!

Вместо этого я должен позвонить:

let fromView = transitionContext.viewController(forkey: .from)!.view!
let toView = transitionContext.viewController(forkey: .to)!.view!
person Victor Pedersen    schedule 13.05.2020