我写了一个自定义的 UIStoryboardSegue。
我的 CustomSegue.m 文件中的唯一代码是:
-(void) perform {
UIViewController* sourceViewController = (UIViewController *) self.sourceViewController;
UIViewController* destinationViewController = (UIViewController *) self.destinationViewController;
UIWindow* window = UIApplication.sharedApplication.keyWindow;
window.rootViewController = destinationViewController;
window.rootViewController = sourceViewController;
[UIView transitionWithView: sourceViewController.view.window
duration: 0.5
options: UIViewAnimationOptionTransitionFlipFromLeft
animations: ^{window.rootViewController = destinationViewController;}
completion: ^(BOOL finished) {}
];
}
如果我设置了一个故事板,所以它只有两个 UIViewController,第一个上的按钮链接到第二个,所有工作都按计划进行:从左过渡有一个翻转。
但是:如果我在第一个 UIViewController 之前放置一个 UINavigationController,则 segue 现在会调出第二个视图控制器,而无需从左侧翻转。
到底是怎么回事?为什么过渡不适用于导航控制器?
谢谢你的帮助!
(如果您有兴趣,我使用自定义 segue 的原因是这样我可以在一些介绍页面之后出现一个主从视图。我受到这个 Stackoverflow 答案的启发。)