【问题标题】:How to perform custom segue across two storyboards?如何跨两个故事板执行自定义转场?
【发布时间】:2014-10-28 15:03:54
【问题描述】:

所以我在工作中继承了一个旧项目,该项目被分解成大量不同的故事板。虽然这并没有太大的麻烦,但客户现在想要一个自定义的 segue 动画,从 Storyboard A 上的 View Controller 到 Storyboard B 上的 View Controller ,我这辈子都想不通.

如果视图在同一个 Storyboard 上,我已经制作了动画,但我无法将它连接到另一个 Storyboard 的过渡。

【问题讨论】:

  • 你试过右键从情节提要 A 拖到情节提要 B 并按下显示动画吗?

标签: ios objective-c iphone uiviewcontroller segue


【解决方案1】:

如果不使用技巧,您将无法做到这一点,因为您无法在故事板之间连接转场。您可以在另一个故事板中手动实例化控制器,然后执行您想要呈现的任何自定义动画或将其推送到代码中。由于使用 segue(而不是在代码中转换到新控制器)的主要原因是您可以在情节提要中看到控制器之间的连接,因此在您的情况下没有太多理由使用 segue。

如果您真的坚持使用 segue,那么您需要在您连接自定义 segue 的第一个故事板中放置一个“虚拟”控制器。该 segue 中的代码将虚拟控制器切换为您想要在另一个故事板中进行 segue 的真实控制器。您可以在此处找到对该技术的参考,http://spin.atomicobject.com/2014/03/06/multiple-ios-storyboards/

【讨论】:

  • 谢谢你!我最终没有使用 segue,只是做了一个自定义动画,并在完成块的末尾关闭了没有动画的当前视图。
【解决方案2】:

找到下面的代码来访问另一个故事板视图:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"storyboard_A_view_identifier"]) {
      UIStoryboard *storyBoardB = [UIStoryboard storyboardWithName:@"storyBoardB" bundle:nil];
      UIViewController *anotherViewController = [storyBoardB instantiateViewControllerWithIdentifier:@"storyboard_B_view_identifier"];
      // use anotherViewController and perform custom animation on it
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2015-03-12
    • 2012-08-22
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    相关资源
    最近更新 更多