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. 周六搞事情,微信小程序开发文档已放出!

    程序员们,你们有事干了! 个人感觉不管是什么形式的UI技术,都无法决定一个产品的生死,核心还是服务和模式的创新. 某些方面和ApiCloud好像,但发展前景远远胜过ApiCloud. 微信小程序可以为 ...

  2. 如何优雅地使用Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...

  3. Maven(一)环境搭建

    网上已经有很多Maven学习的笔记和文章了,但是不自己亲自玩一玩,踩踩坑,证明不了自己到底能不能搞定它! 今天自己亲自搭建了一下环境,感觉基本的使用应该是可以满足了. 使用背景: 安装环境:Windo ...

  4. SQL Server 动态生成数据库所有表Insert语句

    一. 背景 SQL Server,如果我们需要把数据库A的所有表数据到数据库B中,通常我们会怎么做呢?我会使用SSMS的导入导出功能,进行表数据的导入导出,无可厚非,这样的导入非常简单和方便: 但是, ...

  5. ASP.NET Web API与Owin OAuth:调用与用户相关的Web API

    在前一篇博文中,我们通过以 OAuth 的 Client Credential Grant 授权方式(只验证调用客户端,不验证登录用户)拿到的 Access Token ,成功调用了与用户无关的 We ...

  6. Android中如何使用命令行查看内嵌数据库SQLite3

    转载博客:http://www.linuxidc.com/Linux/2011-06/37135.htm 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Andro ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

    系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入1000000条数据吧 declare @i int; ; beg ...

  8. 初步认识Node 之Express

    通过本文,你会对Express有一个较为具体的了解.    起源 2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下来在2010年1月2日,有660次co ...

  9. React.js入门必须知道的那些事

    首先,React.js是facebook在2013年5月开源的一个前端框架,React不是一个MVC框架,它是构建易于可重复调用的web组件,侧重于UI, 也就是view层, React为了更高超的性 ...

  10. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...