《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding

6.4 Interface Builder中的故事板——Storyboarding
iOS 9 开发指南
图片 23 知识点讲解:光盘:视频知识点第6章Interface Builder中的故事板——Storyboarding.mp4
Storyboarding(故事板)是从iOS 5开始新加入的Interface Builder(IB)的功能。其主要功能是在一个窗口中显示整个APP(应用程序)用到的所有或者部分的页面,并且可以定义各页面之间的跳转关系,大大增加了IB便利性。

6.4.1 推出的背景
Interface Builder是Xcode开发环境自带的用户图形界面设计工具,通过它可以随心所欲地将控件或对象(Object)拖曳到视图中。这些控件被存储在一个XIB(发音为zib)或NIB文件中。其实XIB文件是一个XML格式的文件,可以通过编辑工具打开并改写这个Xib文件。当编译程序时,这些视图控件被编译成一个NIB文件。

通常,NIB是与ViewController相关联的,很多ViewController都有对应的NIB文件。NIB文件的作用是描述用户界面、初始化界面元素对象。其实,开发者在NIB中所描述的界面和初始化的对象都能够在代码中实现。之所以用Interface Builder来绘制页面,是为了减少那些设置界面属性的重复而枯燥的代码,让开发者能够集中精力在功能的实现上。

在Xcode 4.2之前,每创建一个视图会生成一个相应的XIB文件。当一个应用有多个视图时,视图之间的跳转管理将变得十分复杂。为了解决这个问题,Storyboard便被推出。

NIB文件无法描述从一个ViewController到另一个ViewController的跳转,这种跳转功能只能靠手写代码的形式来实现。相信很多人都会经常用到如下两个方法。

-presentModalViewController:animated。
-pushViewController:animated。

随着Storyboarding 的出现,使得这种方式成为历史,取而代之的是 Segue [Segwei]。Segue 定义了从一个ViewController到另一个ViewController的跳转。我们在IB中,已经熟悉如何连接界面元素对象和方法(Action Method)。在Stroyboard中,完全可以通过Segue将ViewController连接起来,而不再需要手写代码。如果想自定义Segue,也只需写 Segue的实现即可,而无需编写调用的代码,Storyboard 会自动调用。在使用Storyboard机制时,必须严格遵守MVC原则。View与Controller需完全解耦,并且不同的Controller之间也要充分解耦。

在开发iOS应用程序时,有如下两种创建一个视图(View)的方法。

在Interface Builder中拖曳一个UIView控件:这种方式看似简单,但是会在View之间跳转,所以不便操控。
通过原生代码方式:需要编写的代码工作量巨大,哪怕仅仅创建几个Label,就得手写上百行代码,每个Label 都得设置坐标。为解决以上问题,从iOS 5开始新增了Storyboard 功能。
Storyboard是Xcode 4.2 自带的工具,主要用于iOS 5以后的版本。早期的InterfaceBuilder 所创建的View中,各个View之间是互相独立的,没有相互关联,当一个应用程序有多个View 时,View 之间的跳转很复杂。为此Apple 为开发者带来了Storyboard,尤其是导航栏和标签栏的应用。Storyboard简化了各个视图之间的切换,并由此简化了管理视图控制器的开发过程,完全可以指定视图的切换顺序,而不用手工编写代码。

Storyboard 能够包含一个程序的所有的ViewController以及它们之间的连接。在开发应用程序时,可以将UI Flow作为Storyboard 的输入,一个看似完整的UI在Storyboard中唾手可得。故事板可以根据需要包含任意数量的场景,并通过切换(segue)将场景关联起来。然而故事板不仅可以创建视觉效果,还让我们能够创建对象,而无需手工分配或初始化它们。当应用程序在加载故事板文件中的场景时,其描述的对象将被实例化,可以通过代码访问它们。

6.4.2 故事板的文档大纲
为了更加说明问题,我们打开一个演示工程来观察故事板文件的真实面目。双击光盘中本章工程中的文件Empty.storyboard,此时将打开Interface Builder,并在其中显示该故事板文件的骨架。该文件的内容将以可视化方式显示在IB编辑器区域,而在编辑器区域左边的文档大纲(Document Outline)区域,将以层次方式显示其中的场景,如图6-11所示。

本章演示工程文件只包含了一个场景:View Controller Scene。本书中讲解的创建界面演示工程在大多数情况下都是从单场景故事板开始的,因为它们提供了丰富的空间,让您能够收集用户输入和显示输出。我们将探索多场景故事板。

在View Controller Scene中有如下3个图标。

First Responder(第一响应者)。
View Controller(视图控制器)。
View(视图)。
其中前两个特殊图标用于表示应用程序中的非界面对象,在我们使用的所有故事板场景中都包含它们。

First Responder:该图标表示用户当前正在与之交互的对象。当用户使用iOS应用程序时,可能有多个对象响应用户的手势或键击。第一响应者是当前与用户交互的对象。例如,当用户在文本框中输入时,该文本框将是第一响应者,直到用户移到其他文本框或控件。
View Controller:该图标表示加载应用程序中的故事板场景并与之交互的对象。场景描述的其他所有对象几乎都是由它实例化的。第6章将更详细地介绍界面和视图控制器之间的关系。
View:该图标是一个UIView实例,表示将被视图控制器加载并显示在iOS设备屏幕中的布局。从本质上说,视图是一种层次结构,这意味着当您在界面中添加控件时,它们将包含在视图中。您甚至可在视图中添加其他视图,以便将控件编组或创建可作为一个整体进行显示或隐藏的界面元素。
通过使用独特的视图控制器名称/标签,还有利于场景命名。InterfaceBuilder自动将场景名设置为视图控制器的名称或标签(如果设置了标签),并加上后缀。例如给视图控制器设置了标签Recipe Listing,场景名将变成Recipe Listing Scene。在本项目中包含一个名为View Controller的通用类,此类负责与场景交互。

在最简单的情况下,视图(UIView)是一个矩形区域,可以包含内容以及响应用户事件(触摸等)。事实上,我们将加入到视图中的所有控件(按钮、文本框等)都是UIView的子类。对于这一点您不用担心,只是您在文档中可能遇到这样的情况,即将按钮和其他界面元素称为子视图,而将包含它们的视图称为父视图。

需要牢记的是,在屏幕上看到的任何东西几乎都可视为“视图”。当创建用户界面时,场景包含的对象将增加。有些用户界面由数十个不同的对象组成,这会导致场景拥挤而变得复杂。如果项目程序非常复杂,为了方便管理这些复杂的信息,可以采用折叠或展开文档大纲区域的视图层次结构的方式来解决。

6.4.3 文档大纲的区域对象
在故事板中,文档大纲区域显示了表示应用程序中对象的图标,这样可以展现给用户一个漂亮的列表,并且通过这些图标能够以可视化方式引用它们代表的对象。开发人员可以从这些图标拖曳到其他位置或从其他地方拖曳到这些图标,从而创建让应用程序能够工作的连接。假如我们希望一个屏幕控件(如按钮)能够触发代码中的操作。通过从该按钮拖曳到ViewController图标,可将该GUI元素连接到希望它激活的方法,甚至可以将有些对象直接拖放到代码中,这样可以快速地创建一个与该对象交互的变量或方法。

当在Interface Builder中使用对象时,Xcode为我们开发人员提供了很大的灵活性。例如可以在IB编辑器中直接与UI元素交互,也可以与文档大纲区域中表示这些UI元素的图标交互。另外,在编辑器中的视图下方有一个图标栏,所有在用户界面中不可见的对象(如第一响应者和视图控制器)都可在这里找到,如图6-12所示。

时间: 2024-10-27 09:38:54

《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding的相关文章

《iOS 6核心开发手册(第4版)》——2.3节Interface Builder中的按钮

2.3 Interface Builder中的按钮iOS 6核心开发手册(第4版)按钮默认是作为Rounded Rect Button(圆角矩形按钮)对象出现在Interface Builder库中的(参见图2-1中顶部一排的左起第二个按钮),要使用它们,可把它们拖到界面中.然后可以通过属性检查器(选择View | Utility | Show Attributes Inspector命令,快捷键是Command+Option+4),把它们更改为另一种按钮类型.按钮类型弹出式菜单出现在检查器顶部

《iOS 9 开发指南》——导读

目 录前 言 第一篇 必备技术篇 第1章 IOS开发入门 1.1 iOS系统介绍1.2 开始iOS 9开发之旅1.3 工欲善其事,必先利其器--搭建开发环境 1.4 iOS 9中的常用开发框架 第2章 使用Xcode开发环境详解第3章 Objective-C语言基础第4章 Swift语言基础第5章 Cocoa Touch框架第6章 Xcode Interface Builder界面开发 6.1 Interface Builder基础6.2 和Interface Builder密切相关的库面板 6

《iOS 9 开发指南》——第6章,第6.8节实战演练——将设计界面连接到代码

6.8 实战演练--将设计界面连接到代码iOS 9 开发指南经过本章前面内容的学习,已经掌握了创建界面的基本知识.但是如何才能使设计的界面起作用呢?在本节的内容中,将详细讲解将界面连接到代码并让应用程序运行的方法. 6.8.1 打开项目首先,我们将使用本章Projects文件夹中的项目"lianjie".打开该文件夹,并双击文件"lianjie.xcworkspace",这将在Xcode中打开该项目,如图6-26所示. 加载该项目后,展开项目代码编组(Disconn

《iOS 9 开发指南》——第1章,第1.1节IOS开发入门

第1章 IOS开发入门 iOS 9 开发指南 iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone.iPad和iTouch设备中.iOS通过这些移动设备展示了一个多点触摸界面及众多内置传感器的界面.本章将带领大家认识iOS系统,为读者步入本书后面知识的学习打下基础. 1.1 iOS系统介绍 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第1章\ iOS系统介绍.mp4 iOS是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日的Mac World

《iOS 8开发指南》——第6章,第6.1节MVC模式基础

第6章 使用Xcode编写MVC程序 iOS 8开发指南 在本书前面的内容中,已经学习了面向对象编程语言Objective-C的基本知识,并且探索了Cocoa Touch.Xcode和Interface Builder编辑器的基本用法.虽然我们已经使用了多个创建好的项目,但是还没有从头开始创建一个项目.在本章的内容中,将向读者详细讲解"模型-视图-控制器"应用程序的设计模式,并从头到尾创建一个iOS应用程序的过程,为读者步入本书后面知识的学习打下基础. 6.1 MVC模式基础 iOS

《iOS 9 开发指南》——第1章,第1.4节iOS 9中的常用开发框架

1.4 iOS 9中的常用开发框架 iOS 9 开发指南 图片 2 知识点讲解:光盘:视频\知识点\第1章\ iOS 9中的常用开发框架.mp4 为了提高开发iOS程序的效率,除了可以使用Xcode集成开发工具之外,还可以使用第三方提供的框架,这些框架为我们提供了完整的项目解决方案,是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.在OSX下的Mac操作系统中,大约存在80个框架,这些框架可以用来开发应用程序,处理Mac的Address Book结构.刻制CD.

《iOS 8开发指南》——第6章,第6.3节在Xcode中实现MVC

6.3 在Xcode中实现MVC iOS 8开发指南 在本书前面的内容中,已经讲解了Xcode及其集成的Interface Builder编辑器的知识.并且在本书上一章的内容中,曾经将故事板场景中的对象连接到了应用程序中的代码.在本节的内容中,将详细讲解将视图绑定到控制器的知识. 6.3.1 视图 在Xcode中,虽然可以使用编程的方式创建视图,但是在大多数情况下是使用Interface Builder以可视化的方式设计它们.在视图中可以包含众多界面元素,在加载运行阶段程序时,视图可以创建基本的

《iOS 9 开发指南》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境

1.3 工欲善其事,必先利其器--搭建开发环境 iOS 9 开发指南 图片 2 知识点讲解:光盘:视频\知识点\第1章\搭建开发环境.mp4 学习iOS 9开发也离不开好的开发工具的帮助,如果使用的是OS X El Capitan系统,下载iOS 9开发工具将很容易,只需通过简单地单击操作即可.为此,在Dock中打开Apple Store,搜索Xcode 7并免费下载它,坐下来等待Mac下载大型安装程序(约5GB).如果你使用的不是OS X El Capitan系统,可以从iOS开发中心(htt

《iOS 9 开发指南》——第6章,第6.1节Interface Builder基础

6.1 Interface Builder基础 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第6章\Interface Builder基础.mp4 通过使用Interface Builder(IB),可以快速地创建一个应用程序界面.这不仅是一个GUI绘画工具,而且还可以在不编写任何代码的情况下添加应用程序.这样不但可以减少bug,而且可以缩短开发周期,并且让整个项目更容易维护. IB向Objective-C开发者提供了包含一系列用户界面对象的工具箱,这些对象包括文本框.数据表