Cocoa 编程/入门
本模块将引导您完成创建第一个 Cocoa 应用程序的过程。
本模块旨在帮助您熟悉将要使用的工具的基础知识,不会详细介绍它们。
您将要编写的应用程序将通过图形用户界面接收用户输入的两个数字,并将它们相乘。这两个数字的乘积将发送到图形用户界面。
您需要做的第一件事是启动 Xcode。Xcode 应该位于 /Developer/Applications(硬盘驱动器上的 Developer 文件夹中的 Applications 文件夹)。我们将在接下来的模块中大量使用 Xcode,所以您现在可能希望将其添加到 Dock 中。
双击 Xcode 图标启动它。
Xcode 启动后,您就可以创建项目了。
从文件菜单中选择“新建项目”。将出现以下对话框。
选择“Cocoa 应用程序”,然后单击“下一步”。将出现一个对话框,要求您命名项目。
将项目命名为“Multiply”,然后单击“完成”。Xcode 将创建您的项目并为您设置一些初始文件。完成后,应该会显示以下窗口,我们就可以开始了。
由于您的应用程序非常简单,您可以直接构建用户界面!单击“NIB 文件”旁边的箭头,然后双击“MainMenu.nib”。这将启动 Interface Builder,这是一个有用的程序,您可以使用它来组装图形用户界面。Interface Builder 启动后,您的屏幕上将显示类似于以下窗口。如果窗口看起来略有不同或位置不同,请不要担心。
您的界面首先需要一种方法让用户输入要相乘的两个数字。基本的文本框适合此目的。单击界面元素调色板的“Cocoa-Text”选项卡。从该选项卡中,您应该将一个基本的文本框拖动到应用程序窗口中。拖动界面元素时,有时会出现虚线蓝色线条。这些线条可帮助您根据 Apple 人机交互指南定位元素。将文本框放置在窗口的左上角附近,如下一张图所示。
第一个文本框放置到位后,您应该添加另一个文本框来保存用户将要输入的第二个数字,以及第三个文本框来保存乘积。您的窗口应该看起来像这样。
现在,您的窗口没有任何内容来向用户解释它的作用!它需要一些标签。从界面元素调色板中将一个标签拖动到应用程序窗口中(标签元素是写着“系统字体文本”的那个)。将其放在窗口中后,双击它并将其更改为“x”,将其右边界拖到最左边,并将其放置在头两个文本框之间。创建另一个标签,写着“=”,并将其放置在最后两个文本框之间。您的应用程序现在应该看起来像这样。
现在,您的应用程序需要一种方法来激活乘法运算。选择界面元素调色板的“Cocoa-Controls”选项卡,并将一个按钮拖动到应用程序窗口中。将其放置在右侧文本框下方。双击按钮并将其文本更改为“计算”。由于这是我们要添加到界面中的最后一项,您可能还想调整窗口大小,使其没有太多多余的空间。您的窗口现在应该看起来像这样。
但是这些项目是如何协同工作的呢?目前,文本框和按钮没有任何连接。我们将它们连接到一个控制器对象,我们现在将创建它。单击“MainMenu.nib”窗口的“类”选项卡,然后选择“NSObject”(它在最左边)。选择 NSObject 后,从“类”菜单中选择“子类化 NSObject”。
将新类命名为“MultiplyController”。选中新创建的 MultiplyController 后,从“类”菜单中选择“实例化 MultiplyController”。这将创建一个类实例,我们可以将界面元素连接到它。
现在,当您查看“MainMenu.nib”窗口的“实例”选项卡时,您将看到 MultiplyController 类实例。在我们能够将界面元素连接到控制器之前,我们必须为控制器提供出口和操作。出口是与界面元素的连接,例如文本框,操作是可以由界面元素调用的方法,例如按下按钮时。
单击“类”选项卡中的“MultiplyController”,然后从“工具”菜单中选择“显示信息”(如果您运行的是 Tiger,则选择“显示检查器”。单击信息窗口的“出口”选项卡,然后单击“添加”。将新出口命名为“firstNumber”。添加另外两个名为“secondNumber”和“product”的出口。
在“操作”选项卡中,单击“添加”,并将新操作命名为“Multiply”。
现在您需要将所有部分连接起来。为此,您需要单击“MainMenu.nib”窗口的“实例”选项卡。然后按住键盘上的 Control 键,从“MultiplyController”的实例拖动到应用程序窗口中的第一个文本框。将出现一条蓝色线条,显示您正在建立的连接。到达第一个文本框后,停止拖动,信息窗口将显示您要连接的可能出口。选择“firstNumber”,然后单击“连接”。屏幕截图显示连接建立后的情况,因此检查器窗口中的按钮现在显示“断开连接”,并且 firstNumber 出口旁边有一个球体,表示它是左侧插图中显示的连接的目标。
对“secondNumber”出口和第二个文本框执行相同的操作。最后,将右侧文本框连接到“product”出口。现在我们需要将“计算”按钮连接到 MultiplyController 的乘法操作。这也是通过 Control+拖动来完成的,但这次您从按钮开始,拖动到类实例。这是因为将执行乘法的消息需要从按钮流向控制器。
现在您已经连接了操作和出口,您可以在 Interface Builder 中保存您的工作。但是,在退出 Interface Builder 之前,您应该再做一件事。在“Main Menu.nib”窗口的“类”选项卡中,选择“MultiplyController”,然后从“类”菜单中选择“为 MultiplyController 创建文件”。
在出现的表中,确保选中“MultiplyController.h”和“MultiplyController.m”,然后单击“选择”。
然后,您可以保存您所做的任何更改并退出 Interface Builder。
现在界面已完成,您可以编写 MultiplyController 类的代码。确保已选中 Xcode,然后单击“其他源”。现在将显示应用程序的源代码,位于右侧。双击“MultiplyController.m”以打开它进行编辑。
当前它的内容为
#import "MultiplyController.h" @implementation MultiplyController - (IBAction)multiply:(id)sender { } @end
如果您不理解这一点,您可能需要阅读编程:Objective-C。
我们需要的是让“multiply:”方法获取两个数字,将它们相乘,并将乘积放在结果文本框中。为此,将方法更改为以下内容。
- (IBAction)multiply:(id)sender { [product setIntValue:[firstNumber intValue] * [secondNumber intValue]]; }
如果您理解 Objective-C,这应该对您有意义。如果不理解,您应该阅读编程:Objective-C。
保存“MultiplyController.m”并关闭它。从“构建”菜单中选择“构建并运行”。假设您没有犯任何错误,应用程序应该会运行。输入一些数字并按计算。
- 目前,乘法应用程序使用整数。修改代码,使其可以使用浮点数。
- 修改界面,使应用程序在您更改其中一个文本框的内容时更新。