66

有一个Xcode7 beta名为 的新控件Storyboard Reference。下面是它的图像。

在此处输入图像描述

它的描述为

为外部故事板中的视图控制器提供占位符。连接到此占位符的 Segue 将在运行时实例化引用的视图控制器。

所以问题是

  1. 我们应该在什么情况下使用它?
  2. 这是否用于通过 segue 连接两个故事板的视图控制器?
  3. 这种方法是否用于以编程方式替换另一个故事板的 VC?
  4. 它可以在较旧的 iOS 版本(iOS 9 之前)上运行吗?
4

7 回答 7

51

更新(2016 年 1 月 6 日):我只想快速提一下,使用 Storyboard 引用非常简单,它将帮助您以更干净和可维护的方式使用 Storyboard。它的一个很好的用例是UITabBarController具有多个选项卡。只需为每个选项卡创建一个故事板,并Main.Storyboard使用故事板引用在指向这些单独故事板的链接中。用法非常简单:创建 Storyboard 引用后,您只需为其提供要链接到的单个 Storyboard的文件名,并在该单个 Storyboard 中设置初始视图控制器。而已!:)

下面是我对@YogeshSuthar 的问题给出的原始答案。

  1. 这可以用于您在应用程序中使用多个故事板的情况。到目前为止,您必须以编程方式从其他情节提要中实例化视图控制器,现在您似乎可以使用此引用并在情节提要中创建您的 segue,就像使用来自同一情节提要的视图控制器一样

  2. 是的,您将当前故事板中的一个视图控制器与另一个故事板中的另一个视图控制器连接起来,您可以在这两者之间创建一个segue

  3. 是的,这可以用来替换以前用于以编程方式从其他情节提要中实例化视图控制器的代码

  4. [UPDATE thx to @AlexBasson] Storyboard 引用可以部署到iOS 8OS X 10.10watchOS 1

于 2015-06-11T05:29:22.743 回答
38

故事板参考的使用

那么其他答案对我的问题是正确的。

我想发布Storyboard Reference用于通过 segue 从另一个故事板打开视图控制器的用法,而无需编写任何代码。:)

脚步

  1. 首先创建 1 个新的故事板,将其命名为您想要的任何名称(我将其命名为NewStoryboard)。
  2. 将您的视图控制器(或任何视图控制器)放在NewStoryboard.
  3. 给它一个Storyboard ID(我已经给了newVC)。

在此处输入图像描述

  1. 切换回您的主故事板。
  2. 在这个故事板中拖放Storyboard Reference控件。
  3. 选择Storyboard Reference控件并选择Attributes Inspector
  4. 选择您的新故事板NewStoryboard
  5. 提供参考 ID 为newVC(您在NewStoryboard情节提要中使用的)。
  6. Storyboard Reference通过 ViewController 的 segue连接它。现在它将通过 segue 打开这个 VC 而无需编写代码。:)

在此处输入图像描述

于 2015-06-11T06:02:56.027 回答
9
  1. 它可以在较旧的 iOS 版本(iOS 9 之前)上运行吗?

看起来可能不是:/

故事板引用要求应用程序至少面向 iOS 9.0、OS X 10.11 或 WatchKit 2.0 for watchOS。

来源:watchOS 开发人员库:添加对另一个故事板的引用

于 2015-06-14T01:21:48.320 回答
6
  1. 它可以在较旧的 iOS 版本(iOS 9 之前)上运行吗?

这是一个解决方法(由 Xcode 8 和 iOS 8.2 验证):

  1. 在选项卡的视图控制器中,添加一个容器视图,其框架占据整个视图(如有必要,添加约束以执行此操作)。
  2. 删除容器视图自动添加的嵌入式视图控制器。
  3. 创建您的故事板参考并将嵌入转场从容器视图拖动到此参考。
  4. 如果还没有,请创建 Storyboard 并将 Storyboard 引用分配给它。
  5. 在新的 Storyboard 中,您可以通过选择第一个 View Controller 并在 Attributes Inspector 中的 Simulated Metrics -> Bottom Bar 下选择要显示的 Tab Bar(例如半透明)来模拟选项卡栏的外观。

截屏

于 2016-10-18T18:17:15.937 回答
3

在Xcode Releases的最后一个iOS 开发人员库文档中也添加了此注释(当前版本:Xcode 7.2.1)

Storyboard References 现在可以部署到 iOS 8、OS X 10.10 和 watchOS 1。

这意味着好消息,但请记住:

在 iOS 9.0 之前,Storyboard References 不能是关系 segues 的目的地

所以如果你知道这两个要点,那么你很高兴:)

于 2016-02-11T14:08:34.833 回答
3

刚刚在带有 iOS 8 的 Xcode 7 中测试了故事板参考,但它失败了。

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0
于 2015-09-24T02:43:55.783 回答
2

当我们有一个包含太多屏幕和模块的大型应用程序时,将情节提要按模块划分为多个情节提要是一个很好且方便的选择。在使用多个storyboard时,如果需要在不同storyboard的viewController之间连接segue,可以使用这个控件。如果您正在使用此控件,则无需编写诸如 instantiateViewController 和 pushViewController 之类的代码。您只需连接 segue,执行 segue,如果需要,可以使用 prepareForSegue。

让我们讨论您的所有问题:

  1. 我们应该在什么情况下使用它?-我想你已经在上面找到了答案。

  2. 这是否用于通过 segue 连接两个故事板的视图控制器?-是的

  3. 这种方法是否用于以编程方式替换另一个故事板的 VC?-使用此控件时与编码无关

  4. 它可以在较旧的 iOS 版本(iOS 9 之前)上运行吗?-它可能有效,我还没有尝试过

于 2015-06-11T05:35:27.407 回答