【问题标题】:Transition not showing between views in a custom UIStoryboardSegue自定义 UIStoryboardSegue 中的视图之间未显示过渡
【发布时间】:2013-01-28 18:06:13
【问题描述】:

我已经编写了一个自定义 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 的原因是为了在一些介绍页面之后出现主从视图。我受到 this Stackoverflow answer 的启发。)

【问题讨论】:

    标签: ios xcode cocoa-touch uistoryboardsegue uiviewanimationtransition


    【解决方案1】:

    我从未解决此问题,但找到了一个简单的解决方法。我从前面移除了导航控制器,但在 segue 之后放置了一个。然后我在源屏幕的顶部放置了一个简单的导航栏。 segue 还触发了向目标视图控制器添加后退按钮。因此,我的自定义转场变成了“伪推送”转场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2015-07-18
      相关资源
      最近更新 更多