【问题标题】:Perform a series of storyboard segues执行一系列故事板转场
【发布时间】:2014-11-13 20:36:13
【问题描述】:

我有一个包含 20 多个场景的故事板。我希望能够深度链接到这些场景之一。为此,我想从我的初始视图控制器中执行必要的转场。

假设我有视图控制器 A、B 和 C,其 segues 布局如下。

->A --segue1--> B --segue2--> C

在不向 B 添加特殊代码的情况下从 A 到 C 的最简单方法是什么?我需要从 C 到 B 的展开序列保持完整。我想出的唯一解决方案是在 B 中添加特殊逻辑,如果设置了标志,则在出现后执行 segue2。这并不理想,因为我有一些用例,其中这条链要深得多。我宁愿在 A 中使用类似 [A performSegues:[@"segue1", @"segue2"]] 的代码。

有没有更好的方法来做到这一点?

谢谢!

【问题讨论】:

  • 这些都在一个UINavigationController 中吗? IE。这些都是 push segues?
  • 没有。我已经看到了涉及设置 UINavigationController 的 viewControllers 数组的解决方案,但其中一些 segues 是模态的。

标签: ios objective-c uistoryboardsegue deep-linking


【解决方案1】:

您可以使用 setViewControllers:animated: 一次构建您想要的所有视图控制器堆栈。如果从 A 开始,您可以制作导航控制器的 viewControllers 数组的可变副本,根据需要向其中添加尽可能多的其他视图控制器,然后将该数组传递给 setViewControllers:animated:。如果您将动画设置为 YES,您将看到从 A 到数组中最后一个控制器的单次推送。您仍然可以使用 unwind 来返回到这些控制器中的任何一个。

我认为没有什么好的方法可以用 segues 做到这一点,因为你会看到从一个控制器到下一个控制器的所有转换(除非这是你想看到的)。

【讨论】:

  • 我不介意在过渡中看到中间视图,但它们不一定都推送到导航控制器上。在上面的示例中,segue1 是“推送”,segue2 是“模态显示”。
  • @rgbrgb,如果您想要混合推送和演示,那么我认为没有什么好的方法可以做到这一点。就个人而言,我认为你会看到一堆视图被快速连续推送和呈现的 UI 并不是一个好的设计。
猜你喜欢
  • 2012-08-22
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 2015-03-12
  • 2012-05-12
  • 2016-07-14
  • 1970-01-01
相关资源
最近更新 更多