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框架 作用:一些多媒体的处理,基本上都 ...
随机推荐
- /etc/fstab文件损坏的补救措施
最近乱搞,把/etc/fstab弄坏了,导致无法进入图形界面,而且所有文件都是只读的(简直郁闷到底啊),查了好多资料什么的终于弄好了,也走了不少弯路 恩,我不喜欢扯太多东西,这个是补救的帖子,还是希望 ...
- 安装win7到移动硬盘
jpg改rar http://www.360doc.com/content/16/0816/10/19373891_583556875.shtml
- django进阶-1
前言: 各位久等了,django进阶篇来了. 一.get与post 接口规范: url不能写动词,只能写名词 django默认只支持两种方式: get, post get是获取数据 ?user=zcl ...
- 【Spring Boot&&Spring Cloud系列】使用Intellij构建Spring Boot和Mybatis项目
一.创建项目 1.File->New->Project->spring initializer 2.勾选Web SQL Template Engines 3.项目生成之后,点击add ...
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
- psr-4
自动加载: <?php function autoload($className) { $className = ltrim($className, '\\'); $fileName = ''; ...
- php strpos(), stripos(),strrpos(), strripos()的区别
strpos(), 左边开始,字符出现第一个位置,区分大小写: stripos(),不区分大小写: strrpos(), 左边开始,字符出现,最后一个位置,区分大小写: strripos()不区分大小 ...
- GitStack系统RCE漏洞学习
漏洞简介 漏洞简情 漏洞程序 GitStack 影响版本 <=2.3.10 漏洞类型 RCE 漏洞评价 高危 漏洞编号 CVE-2018-5955 漏洞程序介绍 GitStack是一款基于Pyt ...
- vue使用sass
一.安装sass依赖包 $ npm install sass-loader --save-dev //sass-loader依赖于node-sass $ npm install node-sass - ...
- Centos 创建 docker项目
从gitlab上下载一个docker-compose.yml文件. wget -o docker-compose.yml \ https://raw.githubusercontent.com/sam ...