Storyboard Reference

在某些状况下。你开发的应用可能包括有各类各样的复杂界面,假设你使用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视频


首先咱们经过给UIStoryboard构造方法传入需要引用的Storyboard文件名(这里为Login)。而后在获得的loginStoryboard调用instantiateViewControllerWithIdentifier方法获得对应的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.




參考视频:What's new in Storyboards

相关文章
相关标签/搜索