您的位置:华清远见教育科技集团 >> iOS资料 >> iOS应用程序开发教程:五、为按钮创建操作  
 
iOS应用程序开发教程:五、为按钮创建操作
分享到:

当用户激活一个 UI 元素时,该元素可以向知道如何执行相应操作方法的对象发送一则操作消息,例如"将此联系人添加到用户的联系人列表"。这种互动是目标-操作机制的一部分,该机制是另一种 Cocoa Touch 设计模式。

在本教程中,当用户轻按"Hello"按钮时,你想要按钮发送一则"更改问候语"的消息(操作)给视图控制器(目标)。视图控制器通过更改其管理的字符串(即模型对象)来响应此消息。然后,视图控制器更新在标签中显示的文本,以反映模型对象值的变动。

使用 Xcode,你可以将操作添加到 UI 元素,并设置其相应的操作方法。方法是按住 Control 键并将画布上的元素拖移到源文件中的合适位置(通常是类扩展在视图控制器的实现文件中)。串联图将你通过这种方式创建的连接归档存储下来。稍后,应用程序载入串联图时,会恢复这些连接。

为按钮添加操作

1. 如有需要,选择项目导航器中的 MainStoryboard.storyboard,将场景显示在画布上。

2. 在 Xcode 工具栏中,点按"Utilities"按钮以隐藏实用工具区域,点按"Assistant Editor"按钮以显示辅助编辑器面板。

"Assistant Editor"按钮为中间的那个编辑器按钮,外观是这样的:

3. 确定"Assistant"显示视图控制器的实现文件,即 HelloWorldViewController.m

万一显示的是 HelloWorldViewController.h,请在项目导航器中选择 HelloWorldViewController.m。

4. 在画布上,按住 Control 键将"Hello"按钮拖移到 HelloWorldViewController.m 中的类扩展。

实现文件中的类扩展是申明类的专有属性和方法的地方。(在编写 Objective-C 代码中,你将学到有关类扩展的更多信息。)Outlet 和操作应该专有。视图控制器的 Xcode 模板包含实现文件中的类扩展。以"HelloWorld"项目为例,类扩展看起来像这样:

@interface HellowWorldViewController()

    @end

要按住 Control 键拖移,请按住 Control 键不放,并将按钮拖移到辅助编辑器中的实现文件。随着你按住 Control 键拖移,看到的应该是这样的:

松开 Control 键并停止拖移后,Xcode 会显示一个弹出式窗口,在窗口中可以设置刚进行的操作连接:

注:如果在 HelloWorldViewController.m 类扩展区域以外的其他地方松开 Control 键并停止拖移,可能会看到不同类型的弹出式窗口,或者是什么都没有。如果出现这种情况,请在画布上的视图内部点按来关闭弹出式窗口(如有需要),并再试一次按住 Control 键拖移。

5. 在弹出式窗口中,配置按钮的操作连接:

·  在"Connection"弹出式菜单中,选取"Action"。

·  在"Name"栏中,输入 changeGreeting:(请确保包括冒号)。

    在稍后步骤中,你将实施 changeGreeting: 方法,让它把用户输入文本栏的文本载入,然后在标签中显示。

·  确定"Type"栏包含 id

    id 数据类型可指任何 Cocoa 对象。在这里使用 id 是因为无论哪种类型的对象发送消息都没有关系。

·  请确定"Event"弹出式菜单包含"Touch Up Inside"。

    指定"Touch Up Inside"事件是因为你想要在用户触摸按钮后提起手指时发送消息。

·  请确定"Arguments"弹出式菜单包含"Sender"。

配置完操作连接后,弹出式窗口应该是这样的:

6. 在弹出式窗口中,点按"Connect"。

Xcode 为新的 changeGreeting: 方法添加一个存根实现,并通过在该方法的左边显示一个带有填充的圆圈,以标示已经建立连接。

按住 Control 键将"Hello"按钮拖移到 HelloWorldViewController.m 文件中的类扩展,并配置生成的操作后,你完成了两件事情:通过 Xcode 将合适的代码添加到了视图控制器类中(在 HelloWorldViewController.m 中),并在按钮和视图控制器之间创建了连接。具体来说,Xcode 做了以下事情:

·在 HelloWorldViewController.m 中,将以下操作方法声明添加到了类扩展:

- (IBAction)changeGreeting:(id)sender;

·并将以下的存根方法添加到了实现区域:

- (IBAction)changeGreeting:(id)sender {
    }

·注:IBAction 是一个特殊关键词,用于告诉 Xcode 将一个方法作为目标-操作连接的操作部分来处理。IBAction 被定义为 void

·操作方法中的 sender 参数指向发送操作消息的对象(在本教程中,发送对象为按钮)。

·它在按钮和视图控制器之间创建了连接。

明天的ios应用开发教程,我们会讲解的的是标签和文本栏之间创建连接的方法,敬请关注!

 更多相关文章

·iOS 应用程序开发教程:四、添加用户界面元素
·iOS 应用程序开发教程:三、查看视图控制器和视图
·iOS 应用程序开发教程:二、如何启动IOS应用程序
·iOS 应用程序开发教程:一、创建新项目
·在iOS Simulator中运行iOS应用程序