Я пишу пользовательский переход в UIStoryboardSegue. Я использую CATransition для создания пользовательской анимации справа налево. Если бы я использовал sourceViewController.navigationController?.pushViewController(destinationViewController, animated: false);
, это не привело бы меня ко второму представлению. Он просто выполняет анимацию справа налево и остается на первом виде. Я отладил этот код и обнаружил, что sourceViewController.navigationController равен нулю. У меня есть UINavigationController между первым и вторым представлениями.
Я также попытался заменить эту строку кода на 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);
}
Большое спасибо за Вашу помощь