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

6.8 实战演练——将设计界面连接到代码
iOS 9 开发指南
经过本章前面内容的学习,已经掌握了创建界面的基本知识。但是如何才能使设计的界面起作用呢?在本节的内容中,将详细讲解将界面连接到代码并让应用程序运行的方法。

6.8.1 打开项目
首先,我们将使用本章Projects文件夹中的项目“lianjie”。打开该文件夹,并双击文件“lianjie.xcworkspace”,这将在Xcode中打开该项目,如图6-26所示。

加载该项目后,展开项目代码编组(Disconnected),并单击文件MainStoryboard.storyboard,此故事板文件包含该应用程序将把它显示为界面的场景和视图,并且会在Interface Builder编辑器中显示场景,如图6-27所示。

由图6-27所示的效果可知,该界面包含了如下4个交互式元素。

一个按钮栏(分段控件)。
一个按钮。
一个输出标签。
一个Web视图(一个集成的Web浏览器组件)。
这些控件将与应用程序代码交互,让用户选择花朵颜色并单击“获取花朵”按钮时,文本标签将显示选择的颜色,并从网站http://www.floraphotographs.com随机取回一朵这种颜色的花朵。假设我们期望的执行结果如图6-28所示。

但是到目前为止,还没有将界面连接到应用程序代码,因此执行后只是显示一张漂亮的图片。为了让应用程序能够正常运行,需要将创建到应用程序代码中定义的输出口和操作的连接。

6.8.2  输出口和操作
输出口(outlet)是一个通过它可引用对象的变量,假如Interface Builder中创建了一个用于收集用户姓名的文本框,可能想在代码中为它创建一个名为userName的输出口。这样便可以使用该输出口和相应的属性获取或修改该文本框的内容。

操作(action)是代码中的一个方法,在相应的事件发生时调用它。有些对象(如按钮和开关)可在用户与之交互(如触摸屏幕)时通过事件触发操作。通过在代码中定义操作,Interface Builder可使其能够被屏幕对象触发。

我们可以将Interface Builder中的界面元素与输出口或操作相连,这样就可以创建一个连接。为了让应用程序Disconnected能够成功运行,需要创建到如下所示的输出口和操作的连接。

ColorChoice:一个对应于按钮栏的输出口,用于访问用户选择的颜色。
GetFlower:这是一个操作,它从网上获取一幅花朵图像并显示它,然后将标签更新为选择的颜色。
ChoosedColor:对应于标签的输出口,将被getFlower更新以显示选定颜色的名称。
FlowerView:对应于Web视图的输出口,将被getFlower更新以显示获取的花朵图像。

6.8.3 创建到输出口的连接
要想建立从界面元素到输出口的连接,可以先按住Control键,并同时从场景的View Controller图标(它出现在文档大纲区域和视图下方的图标栏中)拖曳到视图中对象的可视化表示或文档大纲区域中的相应图标。读者可以尝试对按钮栏(分段控件)进行这样的操作。在按住Control键的同时,再单击文档大纲区域中的View Controller图标,并将其拖曳到屏幕上的按钮栏。拖曳时将出现一条线,这样让我们能够轻松地指向要连接的对象。

当松开鼠标时会出现一个下拉列表,在其中列出了可供选择的输出口,如图6-29所示。再次选择“选择颜色”。

因为Interface Builder知道什么类型的对象可以连接到给定的输出口,所以只显示适合当前要创建的连接的输出口。对文本“你的颜色”的标签和Web视图重复上述过程,将它们分别连接到输出口chosenColor和flowerView。

在我们这个演示工程中,其核心功能是通过文件ViewController.m实现的,其主要代码如下所示:

#import "ViewController.h"

@implementation ViewController

@synthesize colorChoice;
@synthesize chosenColor;
@synthesize flowerView;

-(IBAction)getFlower:(id)sender {
NSString *outputHTML;
NSString *color;
NSString *colorVal;
intcolorNum;
colorNum=colorChoice.selectedSegmentIndex;
switch (colorNum) {
case 0:
color=@"Red";
colorVal=@"red";
break;
case 1:
color=@"Blue";
colorVal=@"blue";
break;
case 2:
color=@"Yellow";
colorVal=@"yellow";
break;
case 3:
color=@"Green";
colorVal=@"green";
break;
 }
chosenColor.text=[[NSStringalloc] initWithFormat:@"%@",color];
outputHTML=[[NSStringalloc] initWithFormat:@"<body style='margin: 0px; padding: 0px'><img height='1200'
src='http://www.floraphotographs.com/showrandom.php?color=%@></body>",colorVal];
[flowerViewloadHTMLString:outputHTMLbaseURL:nil];
}

- (void)didReceiveMemoryWarning
{
  [superdidReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
  [superviewDidLoad];
}

- (void)viewDidUnload
{
  [selfsetFlowerView:nil];
  [selfsetChosenColor:nil];
  [selfsetColorChoice:nil];
  [superviewDidUnload];
}

- (void)viewWillAppear:(BOOL)animated
{
  [superviewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
  [superviewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
 [superviewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
 [superviewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrien-tation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

6.8.4 创建到操作的连接
选择将调用操作的对象,并单击Utility区域顶部的箭头图标以打开Connections Inspector(连接检查器)。另外,也可以选择菜单View→Utilities→Show Connections Inspector(Option+ Command+6)。

Connections Inspector显示了当前对象(这里是按钮)支持的事件列表,如图6-30所示。每个事件旁边都有一个空心圆圈,要将事件连接到代码中的操作,可单击相应的圆圈并将其拖曳到文档大纲区域中的View Controller图标。

假如要将按钮“送给我花”连接到方法getFlower,可选择该按钮并打开Connections Inspector(Option+Command+6)。然后将Touch Up Inside事件旁边的圆圈拖曳到场景的View Controller图标,再松开鼠标。当系统询问时选择操作getFlower,如图6-31所示。

在建立连接后检查器会自动更新,以显示事件及其调用的操作。如果单击了其他对象,Connections Inspector将显示该对象到输出口和操作的连接。到此为止,已经将界面连接到了支持它的代码。单击Xcode工具栏中的Run按钮,在iOS模拟器或iOS设备中便可以生成并运行该应用程序,执行效果如图6-32所示。

时间: 2024-09-20 22:53:50

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

《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

Knockout应用开发指南 第七章:Mapping插件

原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些observable值改变的时候,这些UI元素就会自动更新. 绝大多数程序都需要从服务器端获取数据,但是由于服务器不知道observable的概念是什么,它只支持简单的JavaScript对象(通常是序列化以后的JSON),

《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开发者提供了包含一系列用户界面对象的工具箱,这些对象包括文本框.数据表

《iOS 8开发指南》——第6章,第6.5节实战演练——使用模板Single View Application

6.5 实战演练--使用模板Single View Application iOS 8开发指南 Apple在Xcode中提供了一种很有用的应用程序模板,可以快速地创建一个这样的项目,即包含一个故事板.一个空视图和相关联的视图控制器.模板Single View Application(单视图应用程序)是最简单的模板,在本节的内容中将创建一个应用程序,本程序包含了一个视图和一个视图控制器.本节的实例非常简单,先创建了一个用于获取用户输入的文本框(UITextField)和一个按钮,当用户在文本框中输