Storyboard Reference
在某些情况下。你开发的应用可能包括有各种各样的复杂界面,假设你使用Storyboard来管理这些界面,通常你会将这些界面依照对应的逻辑分成很多子模块,放在不同的storyboard里,比方注冊相关的放到Register.Storyboard,图片相关的放到Photos.Storyboard。而主界面放到Main.Storbyoard。
这么做的优点是不仅能够缩小每一个storbyoard的打开速度。并且能够增强维护性,使界面逻辑更加清晰。
通常建议能在Storyboard里做的尽量在Storyboard里做,降低对应的代码量。
在iOS9曾经,Storyboard之间的通信(Segue)仅仅能依靠代码来实现。
比方我们想在Main.Storyboard里引用Login.Storyboard:
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背景颜色设为蓝色以示差别。
如图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG91bmFvYnVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
返回到Main.storyboard文件,拖拽一个Button到唯一一个ViewController里,如今我们想通过点击Button跳转到Second.storyboard里的ViewController里去,该怎样做呢?细致观察Object Library我们会发现多出一个Storyboard Reference,如图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG91bmFvYnVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
这个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已经配置好了,如图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG91bmFvYnVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在Main.storyboard文件中,按住Ctrl键不放,鼠标拖拽Button到Storyboard Reference,弹出的对话框里选择Present Modally.
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG91bmFvYnVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
好的,大功告成,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.
Storyboard Reference的更多相关文章
- Xcode 7:Storyboard Reference、Strong IBOutlet以及Scene Dock
本文由CocoaChina译者小袋子(博客)翻译原文:Storyboard Reference, Strong IBOutlet, Scene Dock in iOS 9 在这个教程中,我想要聊一些有 ...
- Xcode中StoryBoard Reference 新特性的使用
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- swift项目第五天:swift中storyBoard Reference搭建主界面
一:StoryBoard Reference的介绍 StoryBoard Reference是Xcode7,iOS9出现的新功能 目的是让我们可以更好的使用storyboard来开发项目 在之前的开发 ...
- iOS之Storyboard References
如果你曾经使用 interface builder 创建过一个复杂.界面非常多的应用,你就会明白最后那些Storyboards 文件变的有多大.他会迅速变的无法管理,阻碍你的进度.自从引入 Story ...
- StoryBoard拆分(Storyboard References)
https://www.jianshu.com/p/78dc76204c8e iOS UI篇10- Storyboard(Storyboard Reference) https://www.aliyu ...
- iOS 9 学习系列:Storyboard References
http://www.cocoachina.com/ios/20150922/13474.html 如果你曾经使用 interface builder 创建过一个复杂.界面非常多的应用,你就会明白最后 ...
- ios-深度解析二维码的生成与使用
利用一个小demo来对二维码进行学习,总共四个界面(主界面,生成二维码界面,识别二维码界面,扫描二维码界面) 一.二维码的介绍 1.什么是二维码? 二维条码/二维码是用某种特定的 ...
- WWDC 2015 - 概记
WWDC 2015已经过去快一个月了,今年似乎没有像去年那样变化巨大,一切都在慢慢演进,iOS.Mac OS.watchOS都变得越来越好. 新的三大平台的发布,iOS 9/Mac OS EL Cap ...
- 音频播放(iOS开发)
音频处理 一.录音 录音应用场景 语音聊天 即时通讯软件中,都包含语音发送功能 语音备忘录 录一段音频,来记录某件事情 录音功能实现 导入AVFoundation框架 作用:一些多媒体的处理,基本上都 ...
随机推荐
- VS无法导航到插入点F12失败
关闭VS 开启控制台并导航到Visual安装文件夹,例如C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\ID ...
- 判断App整体处于前台还是后台
1.通过RunningTaskInfo类判断(需要额外权限): 复制代码代码如下: /** *判断当前应用程序处于前台还是后台 */ public static boolean isApplicati ...
- React Native(十三)——ios键盘挡住textInput
渐入佳境 用React Native重构的项目也快接近尾声,剩下的就是适配ios的功能了.慢慢地也从中琢磨出了一点门道,于是就遇见了键盘遮挡textInput问题斑斑: 正常页面: android点击 ...
- PowerShell的初步学习
今天要重新学习一钟语法,由于工作中项目的需要,不得不说学习新的语言是必不可少的. Windows PowerShell 是一种命令行外科程序和脚本环境,使命令行用户和脚本编写者可以利 ...
- Android学习之Gallery
在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动.Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最 ...
- hadoop完全分布式搭建HA(高可用)
2018年03月25日 16:25:26 D调的Stanley 阅读数:2725 标签: hadoop HAssh免密登录hdfs HA配置hadoop完全分布式搭建zookeeper 配置 更多 个 ...
- PHP 连接oracle
function connect_oracle(){ static $dbconn = false; if(!$dbconn){ $db_server = "127.0.0.1"; ...
- shell截取字符串的一些简单方法
一.使用${} 1.${var##*/}该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容.使用例子及结果如下:
- Trie树的分析与实现
字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用字符串的 ...
- Storm启动流程分析
1. 客户端运行storm nimbus时,会调用storm的python脚本,该脚本中为每个命令编写一个方法,每个方法都可以生成一条相应的java命令. 命令格式如下:java -server xx ...