iOS系列 基础篇 07 Action动作和输出口

目录: 

1. 前言及案例说明

2. 什么是动作?

3. 什么是输出口?

4. 实战

5. 结尾

1. 前言及案例说明

  上篇内容我们学习了标签和按钮,下面呢 我们通过一个具备用户交互功能的工程案例进一步练习这两个控件的使用,以及动作和输出口的控制。

  此案例基于上篇内容的界面设计,功能的概念流程如图:

  此案例的动作和输出口机制如图:

2. 什么是动作?

  动作是为了响应一个控件的事件而定义的方法,类似于.NET中WinForm为控件某一事件添加的动作方法:

 private void OnClick(object sender, EventArgs e) {
     // ...
 }

  不过在iOS中,动作代码的返回值类型为IBAction,示例代码如下:

 @IBAction func onClick(sender: AnyObject) {
     // ...
 }

  该方法的返回类型是IBAction,说明这个方法是一个动作。

  与.NET WinForm中动作方法相同:sender是参数,是事件源,表示发出当前事件的控件对象,也可以省略如下:

 @IBAction func onClick() {
     // ...
 }

3. 什么是输出口?

注意:

  “输出口”这玩意儿叫法挺奇葩,可能有的朋友不理解,我就从.NET和Android方面举两个例子吧(别的我也不会。。)。

  大家能听懂最好,听不懂的话不必深究这两个例子,直接转眼来看iOS的就行了。

  在.NET WinForm的设计界面中,我们拖放一个控件,VS会自动在当前窗体的后置代码(xxx.Designer.cs)中生成响应的控件创建代码。

  这样,我们就可以在前置代码文件中使用 this.控件名 来访问后置代码中的控件变量,从而操作窗体上的控件。

  在Android中,我们在设计界面上摆放控件之后,如果需要在代码文件中访问该控件,例如:

 Button btn = (Button)findViewByid(R.id.btnXXX);

  这样就可以在功能代码中,通过对象btn来控制界面上id为btnXXX的控件了。

  从这两个例子大家应该就能猜到了,iOS中的“输出口”其实指的就是上面这个控件在功能代码中的对象。

  在iOS中,为了使控件的某个事件与定义的动作关联在一起,我们可以通过Interface Builder或者代码建立关联,本篇中我们重点是用第一种方式。

  跟动作一样,我们也需要为输出口和控件建立联系,这里也可以通过Interface Builder或者代码来实现。

提示:

  Interface Builder设计器就是Interface Builder,在Xcode 4之后被集成到Xcode工具中。

  打开Storyboard故事板或xib文件,就会自动打开Interface Builder设计器。

4. 实战

  为了实现本篇的目标案例,使按钮能够控制标签,我们需要给标签定义并连接输出口,给按钮实现动作。

  点击右上角的“打开辅助编辑器”按钮,打开如图的界面,这样,就可以在设计界面的同时编写功能代码了:

  选中标签Label,同时按住control键,将其拖拽到右边的辅助编辑器窗口后松开鼠标,如图所示:

  松开鼠标后,会弹出一个对话框,如图,在Connection栏中选择Outlet,设置输出口名称为Label1,Type类型为UILabel:

  点击Connect按钮,便会发现右侧的辅助编辑器中自动添加了如下代码:

  按照同样的方式,按住control键,将Button按钮拖拽到辅助编辑器窗口,设置如下:

  点击Connect按钮,便会发现右侧的辅助编辑器中生动添加了一个动作方法:

  我们在动作方法onClick中实现如下代码:

  这样,当我们点击Button按钮的时候,就会响应执行onClick动作方法,从而通过Label1对象,修改其绑定的标签的text文本内容。

  案例运行效果如下:

5. 小结

  虽然应用并不是多么的高大上,但是毕竟是咱们亲手做出来的第一个案例。还是蛮激动的。

  “麻雀虽小 五脏俱全”,我们一起加油,让这只麻雀飞的更傲娇、

iOS系列 基础篇 07 Action动作和输出口的更多相关文章

  1. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  2. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  3. iOS系列 基础篇 08 文本与键盘

    iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...

  4. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  5. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  6. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  7. Java多线程系列--“基础篇”07之 线程休眠

    概要 本章,会对Thread中sleep()方法进行介绍.涉及到的内容包括:1. sleep()介绍2. sleep()示例3. sleep() 与 wait()的比较 转载请注明出处:http:// ...

  8. iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试

    iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...

  9. iOS系列 基础篇 02 StoryBoard 故事板文件

    iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...

随机推荐

  1. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  2. JVM虚拟机结构

    JVM的主要结构如下图所示,图片引用自舒の随想日记. 方法区和堆由所有线程共享,其他区域都是线程私有的 程序计数器(Program Counter Register) 类似于PC寄存器,是一块较小的内 ...

  3. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...

  4. 设计C/S架构应用程序的并发功能

    C/S架构的ERP.CRM程序有的是以并发点(Concurrency)来销售,并发点是指同时在线人数.并发数量大时,理论上程序的运行速度会慢,软件供应商(vendor)也以控制并发的上限以解决客户对系 ...

  5. jQuery之常用且重要方法梳理(siblings,nextAll,end,wrap,apply,call,each)-(二)

    1.siblings() siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的. <body> <div><span>Hello</ ...

  6. C#:浅析结构与类的区别

    一.      结构:值类型,存储在堆栈中,位于计算机的内存逻辑区域中      类   :引用类型,存储在堆中,位于计算机内存的不同逻辑位置   二.      较小的数据使用结构:      将一 ...

  7. 计算机程序的思维逻辑 (31) - 剖析Arrays

    数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...

  8. c#官方推荐md5通用加密类

    /// <summary> /// MD5加密 /// </summary> /// <param name="input">需要加密的字符串& ...

  9. 原创:去繁存简,回归本源:微信小程序公开课信息分析《一》

    以前我开过一些帖子,我们内部也做过一些讨论,我们从张小龙的碎屏图中 ,发现了重要讯息: 1:微信支付将成为重要场景: 2:这些应用与春节关系不小,很多应用在春节时,有重要的场景开启可能性: 3:春节是 ...

  10. 基于hexo+github搭建一个独立博客

    一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉. 使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平 ...