一、多场景故事板
1、基础
视图控制器(ViewController):负责管理用户与其IOS设备交互的类;
场景(Scene):视图控制器和视图的独特组合;
切换(Segue):切换是场景的过渡,常使用视觉过渡效果;
模态视图(Modal View):在需要进行用户交互时,通过模态视图显示在另一个视图上;
关系(Relationship):类似于切换,用于某些类型的视图控制器,如选项卡栏控制器。关系是在主选项卡栏的按钮之间创建的,当用户触摸这些按钮时会显示独立的场景;
故事板(Storyboard):包含项目中场景、切换和关系定义的文件。
故事板提供了一个空间,让用户能够以可视化方式描述应用程序的设计和工作流程。每个场景都是一个用户将遇到的屏幕。每个切换都是场景间过渡。
2、简单示例
1)、创建一个新的项目,选择Single View模式,只包含一个视图控制器和视图,也就是说只包含一个场景。
2)、在故事板中添加场景:在IB中打开storyBoard,在对象库中选取View Controller,将其拖动到IB编辑器的空白区域,这样就在故事板中成功地添加了一个视图控制器和相应的视图,从而新增了一个场景。
3)、给场景命名
默认情况下,每个场景都会根据其视图控制器类来命名,在项目中已经有一个名为ViewController的类了,所以在文档大纲中,默认场景名为ViewController Scene。而现在新增的场景还没有为其指定视图控制器类,所以该场景也名为ViewController Scene。如果继续添加更多的场景,这些场景也都会被命名为ViewController Scene。
为了解决同名问题,有两种办法:
一是添加视图控制器类,并将其指定给新场景;
二是根据自己的意思来给场景指定名称,这样往往更有意义。
选择视图控制器,打开属性Identity Inspector并展开,然后在文本框Label中输入场景名。Xcode将自动在后面添加Scene,因此我们无须添加Scene。
4)、添加提供支持的视图控制器子类
在故事板中添加新场景后,需要将其与代码关联起来。在模板Single View Application中,已经将初始视图的视图控制器配置成了类ViewController的一个实例,并且有它的ViewController.h和ViewController.m文件。
同样,现在为了支持新的场景,需要在项目中添加UIViewController的子类。添加办法是在项目导航器可见的情况下,点击左下角的"+"按钮,然后选择"NewFile"选项。
最后将新添加的类加入项目,点击Create按钮,就好了。
这时候,新场景就像是一个新的应用程序,和默认的场景是彼此独立的,不能在该场景和原来的场景之间交换数据,也不能在它们之间过渡。
5)、创建切换
最简单的方式是,在第一个场景上添加一个按钮,按住Control键,拖动到第二个场景,松开鼠标会弹出一个故事板切换框:
一般选择modal(模态)过渡,其它切换用于特殊情形,且仅在这些情形下才管用。
将切换加入到项目后,可以看到两个场景之间有一条线将它们连接在一起:
现在运行项目,点击默认场景的Button按钮,会跳出第二个场景。
注:
从开始到现在,都没有编写任何代码,就能在场景之间切换。但是这有它的局限性:
不能以编程方式与这样的切换交互;
切换到目标视图后,就不能返回到原来的视图,为了返回到原来的视图,需要编写代码。