Я пишу пользовательский segue в UIStoryboardSegue. Я использую CAT-переход для создания пользовательской анимации справа налево. Если я использовал sourceViewController.navigationController?.pushViewController(destinationViewController, animated: false);
, это не приведет меня ко второму виду. Он просто выполняет анимацию справа налево и остается на первом представлении. Я отлаживал этот код, и я обнаружил, что sourceViewController.navigationController равен нулю. У меня есть UINavigationController между первым представлением и вторым представлением.NavigationController.pushViewController в Custom Segue не работает - Swift 2.0 - iOS 9.1
Я также попытался заменить эту строку кода на sourceViewController.presentViewController(destinationViewController, animated: false, completion: nil);
. Переход происходит, но это происходит слишком быстро, что я не вижу анимацию справа налево.
Мой полный код в этом UIStoryboardSegue заключается в следующем:
override func perform() {
let sourceViewController = self.sourceViewController as UIViewController;
let destinationViewController = self.destinationViewController as UIViewController;
let transition: CATransition = CATransition()
transition.duration = 0.25;
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
sourceViewController.view.layer.addAnimation(transition, forKey: "kCATransition")
sourceViewController.navigationController?.pushViewController(destinationViewController, animated: false);
}
Большое спасибо за вашу помощь
Этот ответ может быть правильным, но плохо объяснен. Заполните ответ – voghDev