Xcode中的故事板参考,我们应该在哪里使用它?

时间:2015-06-11 05:19:15

标签: ios xcode xcode7

Xcode7 beta中有一个名为Storyboard Reference的新控件。下面是它的形象。

enter image description here

它的描述为

  

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

所以问题是

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

7 个答案:

答案 0 :(得分:49)

更新(2016年1月6日):我只想快速提一下,使用Storyboard引用非常简单,它将帮助您更多地使用Storyboard干净,可维护的方式。 一个很好的用例就是例如带有多个标签的UITabBarController。只需为每个选项卡创建一个Storyboard,并使用Storyboard引用在Main.Storyboard链接到那些单独的Storyboard。用法非常简单:在创建Storyboard引用后,您只需要为其指定 filename < / em>要链接到的单个Storyboard,并在该单个Storyboard中设置初始视图控制器。而已! :)

现在接下来是我给@ YogeshSuthar提出的问题的原始答案

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

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

  3. 是的,这可用于替换以前用于以编程方式从其他故事板实例化视图控制器的代码

  4. [更新至@AlexBasson]故事板参考可以部署到 iOS 8 OS X 10.10 watchOS 1 。< / p>

答案 1 :(得分:33)

故事板参考的用法

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

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

步骤

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

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

答案 2 :(得分:9)

  1. 它适用于较旧的iOS版本(iOS 9之前)吗?
  2. 看起来可能不是:/

      

    故事板引用要求应用程序至少定位iOS 9.0,OS X.   10.11,或WatchK的WatchKit 2.0。

    来源:watchOS Developer Library: Adding a Reference to Another Storyboard

答案 3 :(得分:4)

  
      
  1. 它适用于较旧的iOS版本(iOS 9之前)吗?
  2.   

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

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

答案 4 :(得分:3)

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

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0

答案 5 :(得分:3)

Xcode Releases的最后 iOS Developer Library 文档中添加了此注释(当前版本:Xcode 7.2.1)

  

故事板参考现在可以部署到iOS 8,OS X 10.10和   watchOS 1。

这意味着好消息,但仍记得:

  

故事板参考不能成为关系的目的地   iOS 9.0之前的segues

因此,如果您了解这两个要点,那么您就可以了:)

答案 6 :(得分:2)

  

当我们有一个包含太多屏幕和模块的大型应用程序时,   根据模块将故事板划分为多个故事板是一件好事   方便的选择。使用多个故事板时,如果需要   在不同故事板的viewControllers之间连接segue,你可以   使用此控件。如果你正在使用这个控件,不需要像instantiateViewController和pushViewController等那样编写代码。你可以连接segue,执行segue,如果需要,可以使用prepareForSegue。

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

  1. 我们应该在哪些情况下使用它? - 我想你已经找到了 你上面的回答。

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

  3. 此方法是否用于替换另一个故事板的VC 编程? - 使用此功能时与编码无关 控制

  4. 它适用于较旧的iOS版本(iOS 9之前)吗? - 它可能有用,我 没有尝试