Xcode中的Storyboard参考,我们应该在哪里使用它?
Xcode7 beta
有一个名为Storyboard Reference
新控件。 以下是它的形象。
它的描述如下
为外部故事板中的视图控制器提供占位符。 连接到这个占位符的Segges会在运行时实例化引用的视图控制器。
所以问题是
- 我们应该在哪种情况下使用?
- 这是用来通过segue连接两个故事板的视图控制器?
- 这种方法是否用编程方式取代另一个故事板的VC?
- 它会在较旧的iOS版本(iOS 9之前)上运行吗?
更新(2016年1月6日) :我只想快速提及,使用Storyboard引用非常简单,并将帮助您以更简洁,更易维护的方式使用Storyboard。 一个很好的用例就是例如带有多个选项卡的UITabBarController
。 只需为每个选项卡创build一个Storyboard,并在您的Main.Storyboard
链接中使用Storyboard引用链接到这些单独的Storyboard。 用法非常简单:在创build一个Storyboard引用之后,只需要给它一个你想要链接到的Storyboard的文件名 ,并在这个独立的Storyboard中设置初始视图控制器 。 而已! 🙂
以下是我对YogeshSuthar提出的问题的原始答复 。
-
这可以用于你的应用程序中使用多个故事板的情况。 直到现在,你必须以编程方式从其他故事板实例化视图控制器,看起来像现在你可以使用这个参考,并在故事板中创build你的segue,就像从同一个故事板
-
是的,你从当前的故事板连接一个视图控制器与另一个视图控制器从一个不同的故事板,你可以创build这两个
-
是的,这可以用来代替以前用于以编程方式从其他故事板实例化视图控制器的代码
-
[更新thx到@AlexBasson]故事板参考可以部署到iOS 8 , OS X 10.10和watchOS 1 。
Storyboard参考的用法
其他答案对我的问题是正确的。
我想发布Storyboard Reference
的用法,用于通过segue从另一个故事板中打开View控制器,而无需编写任何代码。 🙂
脚步
- 首先创build一个新的故事板名称任何你想要的(我把它命名为
NewStoryboard
)。 - 将您的视图控制器(或任何视图控制器)放在
NewStoryboard
。 - 给它一个
Storyboard ID
(我给了newVC
)。
- 切换回您的主要故事板。
- 在
Storyboard Reference
拖放Storyboard Reference
控件。 - select
Storyboard Reference
控件并selectAttributes Inspector
。 - select你的新故事板
NewStoryboard
。 - 提供引用ID作为
newVC
(你在NewStoryboard
故事板中使用)。 - 通过ViewController中的segue连接这个
Storyboard Reference
。 现在它将通过segue打开这个VC而无需编写代码。 🙂
- 它会在较旧的iOS版本(iOS 9之前)上运行吗?
看起来可能不是:/
故事板参考需要针对watchOS的至lessiOS 9.0,OS X 10.11或WatchKit 2.0应用。
来源: watchOS开发者库:添加引用到另一个故事板
- 它会在较旧的iOS版本(iOS 9之前)上运行吗?
这是一个解决方法(由Xcode 8和iOS 8.2validation):
- 在该选项卡的视图控制器中,添加一个容器视图,其框架占据了整个视图(如有必要添加约束来完成此操作)。
- 删除由容器视图自动添加的embedded式视图控制器。
- 创build您的故事板参考,并将容器视图中的embeddedsegue拖动到此引用。
- 如果尚未创build故事板并将故事板引用分配给它。
- 在新的故事板中,可以通过select第一个视图控制器来模拟标签栏的外观,并在属性检查器的模拟度量标准 – >底部栏中select一个标签栏来显示(例如半透明)。
刚刚在iOS 7中testing了Xcode 7中的故事板参考,但失败了。
Illegal Configuration: Storyboard References cannot be the destinations of relationship segues prior to iOS 9.0
在最后一个Xcode发行 版的iOS Developer Library文档中也增加了这个注释( 当前版本:Xcode 7.2.1) :
故事板参考现在可以部署到iOS 8,OS X 10.10和watchOS 1。
这意味着好消息,但还是要记住:
故事板参考不能成为iOS 9.0之前关系的目的地
所以,如果你知道这两个要点,那么你很好走:)
当我们有一个很大的应用程序,屏幕和模块太多,根据模块划分故事板到多个故事板是一个很好和方便的select。 当使用多个故事板时,如果您需要在不同故事板的viewControllers之间连接segue,则可以使用此控件。 如果你正在使用这个控件,不需要像instantiateViewController和pushViewController等那样编码东西。你可以连接segue,执行segue,如果你需要的话可以使用prepareForSegue。
让我们来讨论你所有的问题:
-
我们应该在哪种情况下使用? – 我想你已经find了上面的答案。
-
这是用来通过segue连接两个故事板的视图控制器? – 是的
-
这种方法是用程序代替另一个故事板的VC吗? – 使用这个控件时,与编码无关
-
它会在较旧的iOS版本(iOS 9之前)上运行吗? – 它可能工作,我没有尝试