Storyboard Reference

article/2025/9/14 16:20:18

在某些情况下,你开发的应用可能包含有各种各样的复杂界面,如果你使用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背景颜色设为蓝色以示区别。如图所示:



返回到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


http://chatgpt.dhexx.cn/article/vT0vnSRM.shtml

相关文章

storyboard使用教程

Storyboard是最先在iOS 5引入的一项振奋人心的特性,大幅缩减构建App用户界面所需的时间。 要介绍Storyboard是什么,我打算从这张图讲起。下面是您将会在本教程中构建的Storyboard: image 或许你现在并不清楚这个App是用来做什么的&#xff0c…

关于storyboard的使用入门

 在iOS5以前,一直使用纯代码进行处理界面,尽管能够严格数据信息,但是操作上相比storyboards操作效率低,现就这个时尚的storyboards进行简要学习总结。 一 创建storyboards。 创建storyboards的方式有多种…

Storyboard入门

Storyboard 是iOS 5 中令人兴奋的一个新特性,他将为你在创建用户界面上节省很多时间。 那么究竟什么是Storyboard呢?我将用一幅图片来向你展示: 下面这个就是本教程中即将用到的Storyboard。 你或许不能精确的知道这个应用是做什么的,但是你可…

IOS开发入门之五——storyboard的使用(上)

需要iOS开发视频资料可以加我微信: 1914532832 验证信息请注明:IOS开发 上节介绍了纯代码开发,就是所有页面全部用代码来写,纯代码开发缺点就是比较慢的,而且很不直观,需要在App运行后才能看到页面效果。这节介绍重点…

IOS开发之——更换Storyboard

一 概述 新建项目的默认面板为Main.storyboard,用于向界面中添加控件并显示向项目中添加新的storyboard,并替换Main.storyboard 二 添加新的Storyboard 在Main.storyboard上右键,选择New File 在User Interface 分类下,选择Stor…

使用storyboard

story board是xcode4.2新增的一个特性,它将原有工程中的所有xib文件集成在一起,用拖拽的方式建立2个viewController之间的跳转关系,使得整个程序的UI跳转逻辑清楚明了。使用storyboard后,界面相关的代码编写将更少。 简单说…

Storyboard使用心得

最近接触IOS7新特性,之前项目都是使用xib,没有使用过storyboard,今天就研究下。首先,说下storyboard优缺点,优点:a). 流程结构清晰b). 有内置的segue支持c). 方便的实例化ViewController缺点:a). 所有的Vie…

Storyboard 自适应布局

原文链接:http://justsee.iteye.com/blog/2148987 通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步。在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想。我们不必再为不同尺寸的Apple移动设备创建不同的storyboard文件&a…

IOS开发之Storyboard应用

(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图: 现在,你就可以清楚的看到这个应用究竟是干些什么…

Storyboard的使用

创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程。有关storyboard的介绍在后面的文章中提到。 首先利用xcode4.2创建一个新项目,…

Storyboard全解析

原文地址:Storyboard全解析 作者:Capacity 故事版(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图&…

Storyboard 解析

故事版(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图: 现在,你就可以清楚的看到这个应用究竟是干…

故事板(Storyboard)

1 使用Storyboard完成各项常见功能 1.1 问题 故事板Storyboard是IOS5开始引入的一个新的系统,将多个视图文件(类似xib文件)集中到一个单独的可视化工作区间,负责创建和管理所有的界面及界面间的跳转,每一个Storyboard中…

什么是故事板?(故事图、Storyboard)(软件显示效果的视觉草图,用于视频创作和广告设计,表达作者的创意)

故事板是软件显示效果的视觉草图,用于视频创作和广告设计,表达作者的创意。20世纪90年代以来,电脑绘制软件渐渐取代了过去的手绘故事板,许多大制作的商业影片,都在拍摄之前用电脑动画模拟的方式创建故事板,…

JSONObject 使用方法详解

JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包,本文给大家介绍jsonobject使用方法相关知识,感兴趣的朋友一起学习吧 1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转…

JSONObject使用方法及详解

最近自己负责的项目涉及到JSON数据的解析,所以在学习之后讲讲自己的认识及见解,希望对大家有帮助. 首先我们来讲讲JSONObject,JSON的数据格式如下: [ { name1 : { name2: { name3: value1 , name4: value2 } } } , { } ] 从外到里看,例子中就是一个数组&…

JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()

六个架包(666) 首先我们系统中要用到JSON解析,所以要引入这六个架包。饱饱 不引入这六个架包的话,使用JSONObject.fromObject 和 SONObject.toBean会报错,而且有的时候编译器不会告诉你是架包缺少的错误哦&#xff…

使用JSONObject解析

一、JSON数据 1、JSON串访问方式: 2、简介 – JSON(JavaScript Object Notation) 是一种轻量级的数据 交换格式。 – JSON 数据的书写格式: " KEY " : " VALUE " JSON 结构有两种结构: 1、对象(表的一列&…

JSONObject使用方法详解

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件 说明:因为工作…

JSONObject使用方法

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http://files.cnblogs.com/java-pan/lib.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件 说明:因为工作中项目…