在某些状况下。你开发的应用可能包括有各类各样的复杂界面,假设你使用Storyboard来管理这些界面,一般你会将这些界面依照对应的逻辑分红不少子模块,放在不一样的storyboard里,比方注冊相关的放到Register.Storyboard,图片相关的放到Photos.Storyboard。而主界面放到Main.Storbyoard。app
这么作的优势是不只可以缩小每个storbyoard的打开速度。而且可以加强维护性,使界面逻辑更加清晰。ide
一般建议能在Storyboard里作的尽可能在Storyboard里作,下降对应的代码量。post
在iOS9曾经,Storyboard之间的通讯(Segue)仅仅能依靠代码来实现。ui
比方咱们想在Main.Storyboard里引用Login.Storyboard:code
let loginStoryboard = UIStoryboard(name: "Login", bundle: nil) //Login为对应Storyboard的名字,不需要后缀名。let loginViewController = loginStoryboard.instantiateViewControllerWithIdentifier("LoginInterface")// 依据storyboard里声明的StoryboardID获取该storyboard里的ViewController视频
好消息是,在Xcode7中引入了Storyboard Reference(故事版引用),可以用来替代上面的代码。图片
如下将举一个简单的样例来解说怎样使用Storyboard Reference。开发
首先若是你已经下载了Xcode7-beta版本号。新建一个Single View Application,该模版会本身主动建立一个Main.storyboard文件。同一时候该文件中默认有一个ViewController Scene。在项目里新建另一个storyboad。取名为Second.storyboard。打开Second.storyboard文件。在Object Library里拖拽一个ViewController,并在属性面板里勾选“Is Initial View Controller”,同一时候将该View Controller里的view背景颜色设为蓝色以示差异。get
如图所看到的:it
返回到Main.storyboard文件,拖拽一个Button到惟一一个ViewController里,现在咱们想经过点击Button跳转到Second.storyboard里的ViewController里去,该怎样作呢?细致观察Object Library咱们会发现多出一个Storyboard Reference,如图所看到的:
这个Storyboard Reference表明Storyboard文件的引用,经过属性面板(Attribute Inspector)可以配置该Storyboard Reference。
Storyboard Reference属性面板有三个字段,第一个字段(Storyboard)指定你要引用的Storyboard文件名称,第二个字段指定你要跳转到哪一个ViewController。该ID即为Storyboard里ViewController的Storyboard ID。
假设不填的话,默以为该Storyboard的Initial View Controller。第三个字段指定该Storyboard存在于哪一个Bundle,比方假设来自于其它的Framework。可以指定该Framework的bundle,假设存在于同一个项目,可以留着不填。
现在咱们在Main.storyboard里拖拽一个Storyboard Reference到画布里去,点击该Storyboard Reference,在右边的面板里选择属性面板,Storyboard字段选择Second。Reference ID不填(使用Initial View Controller)。bundle也不填。这个时候Storyboard Reference已经配置好了,如图所看到的:
在Main.storyboard文件中,按住Ctrl键不放,鼠标拖拽Button到Storyboard Reference,弹出的对话框里选择Present Modally.
好的,大功告成,Build and Run,点击button。你会发现来自于Second.storyboard里的View Controller被成功展现出来。(仅仅是有一个bug,弹出蓝色界面后没法返回了。。
。)
另外,假设曾经的项目仅仅有一个Storyboard文件,你可以依据对应的逻辑重构Storyboard,仅仅需要选中你要重构的View Controllers,而后点击菜单Editor->Refactor to Storyboard,在弹出的对话框中输入新的Storyboard文件名称。而后点击肯定,这样你选中的View Controllers全部都被放到新建的Storyboard文件中,同一时候原来的Storyboard文件中用配置好的Storyboard Reference来替代被移除的View Controllers.