В UIViewControllerAnimatedTransitioning «to ViewController» имеет представление, но «to View» - ноль - PullRequest
0 голосов
/ 03 февраля 2019

Я учусь создавать пользовательские (интерактивные) переходы между контроллерами представления.Я создал настройки, когда я хочу представить что-то модально.Представление работает, но увольнение заканчивается черным экраном по окончании анимации.

Я заметил нечто странное:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
    let fromV = transitionContext.view(forKey: .from)
    let toV = transitionContext.view(forKey: .to)

    let fromVC = transitionContext.viewController(forKey: .from)
    let toVC = transitionContext.viewController(forKey: .to)
    //....
 }

Как и ожидалось, fromV и fromVC.view имеетссылка на то же представление (проверено в отладчике, адрес тот же).Однако toV - это nil, в то время как toVC.view имеет некоторый (кажется, похожий) действительный адрес для действительного просмотра.

Как это возможно?Разве они не должны всегда совпадать с одинаковыми значениями?

1 Ответ

0 голосов
/ 03 февраля 2019

Если вы хотите получить доступ к представлению контроллера toView, вы бы использовали

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        if let toVC = transitionContext.viewController(forKey: .to) {
            let toView = toVC.view.snapshotView(afterScreenUpdates: true)
        }
        //rest of code
    }

Согласно документу

Этот метод очень эффективно фиксирует текущую визуализацию видапросматривать и использовать его для создания нового представления снимка.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...