Пользовательский сброс корневого элемента ViewController segue не показывает правильные заголовки и кнопки панели навигации - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть этот пользовательский переход, который сбрасывает контроллер корневого представления с пользовательским переходом.

class ResetRootViewControllerSegue: UIStoryboardSegue {
    override func perform() {
        let src = source
        let dst = destination
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)

        UIView.animate(withDuration: 0.25,
                       delay: 0.0,
                       options: .curveEaseInOut,
                       animations: {
                        dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
            },
                       completion: { _ in
                        src.present(dst, animated: false, completion: {
                            UIApplication.shared.keyWindow?.rootViewController = dst
                        })
            }
        )
    }
}

Root ViewController - это TabbarViewController, который инкапсулирует панели навигации в каждой вкладке.

Проблема.

Когда я выполняю этот код только в первой панели навигации, отображается. Названия других панелей навигации пусты.

Этот код без анимации тоже не работает

 class ResetRootViewControllerSegue: UIStoryboardSegue {
        override func perform() {
            let src = source
            let dst = destination
            src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
            dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)

                            src.present(dst, animated: false, completion: {
                                UIApplication.shared.keyWindow?.rootViewController = dst
                            })

        }
    }

Но когда я использую этот класс без анимации, все работает нормально.

class ResetRootViewControllerSegue: UIStoryboardSegue {
    override func perform() {
        let src = source
        let dst = destination
        UIApplication.shared.keyWindow?.rootViewController = dst
    }
}

эта простая анимация тоже работает

class ResetRootViewControllerSegue: UIStoryboardSegue {
    override func perform() {
        let src = source
        let dst = destination
        UIApplication.shared.keyWindow?.rootViewController = dst
        UIView.transition(with: (UIApplication.shared.delegate!).window!!,
                          duration: 4.0,
                          options: .transitionCrossDissolve,
                          animations: { UIApplication.shared.keyWindow?.rootViewController = dst },
                          completion: nil)

    }
}

Любые идеи, как я могу реализовать мою собственную анимацию перехода?

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