我写了一个自定义的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) {}
];
}
如果我设置了一个故事板,它只有两个UIViewControllers,第一个链接到第二个按钮,所有按计划工作:从左转换开始翻转。
但是:如果我在第一个UIViewController之前放置一个UINavigationController,segue现在会调出第二个视图控制器,而不会从左边进行翻转。
发生了什么事?为什么转换不适用于导航控制器?
感谢您的帮助!
(如果您感兴趣,我使用自定义segue的原因是我可以在一些介绍页面之后显示主 - 详细视图。我受到this Stackoverflow answer的启发。)
答案 0 :(得分:1)
我从未解决这个问题,但找到了一个简单的解决方法。我从前面移除了导航控制器,但是在segue之后放了一个。然后我在源屏幕的顶部放置了一个简单的导航栏。 segue还触发向目标视图控制器添加后退按钮。因此,我的自定义segue成为了一个“伪推”的segue。