首页 > 代码库 > iOS系列 基础篇 07 Action动作和输出口

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

 

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

 

目录: 

1. 前言及案例说明

2. 什么是动作?

3. 什么是输出口?

4. 实战

5. 结尾

 

 

1. 前言及案例说明

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

 

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

技术分享

 

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

技术分享

 

 

 

2. 什么是动作?

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

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

 

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

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

 

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

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

1 @IBAction func onClick() {2     // ...3 }

 

 

 

3. 什么是输出口?

注意:

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

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

 

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

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

 

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

1 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动作和输出口