Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2970337
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: 嵌入式

2012-01-18 17:26:52

我们学习了用Interface Builder来制作程序的界面。这回我们来学习程序中具体的操作和处理。

确认操作与处理

首先让我们确认一下用户怎样操作控件,程序应该怎样处理这些操作。

这个应用程序是通过用户输入商品价格,并选择折扣比率,来计算打折后的价格。用户需要以下两步操作 :

  • 输入商品金额
  • 选择折扣率

这之后,程序中计算打折后的金额并表示输出。

Outlet与Action

在我们开始之前,需要记住以下两个单词。在以后我们会经常用到它们。

Outlet

通过outlet,我们可以从控件中取出信息,或者将新的信息赋予控件。按照词典上的解释outlet可以理解为插座的意思。界面上配置的每个控件,就像是通过“插座”与界面连接。这里,将程序设置在“插座”内,实现控件与界面间的信息交换。

Action

Action就是指程序中具体的行为,处理。应用程序将按照Action内实现的内容来处理。比如,「按下按钮后的处理」或者「输入文字后的处理」等等。

编写程序

接下来我们就开始写程序了。最初的程序在Interface Builder上编写。

生成Outlet

刚才已经说到,这个程序中需要编程的控件分别是用户输入商品金额与选择折扣率,以及在画面上显示打折后的金额。就是说,我们需要生成3个Outlet。

File

 

File's Owner中表示程序的ICON

在Interface Builder内部,程序的实体用ICON来表示。其中「File's Owner」的ICON就是表示程序实体。在File's Owner中可以生成Outlet。

选择File's Owner,点击Inspector的最右边的Identity标签。其中「Class Outlets」项目就是Outlet的表格。点击「+」可以追加新的Outlet。

add Outlet

 

追加Outlet

首先我们创建一个名为「motone」的Outlet,代表商品的原价。第二个为「waribiki」,代表选择的折扣率。最后创建一个名为「kekka」的Outlet,代表打折后的价格,用来放入界面中的控件。像是下图所示:

outlet

 

生成Action

与Outlet一样,ACtion也是由Inspector做成。在刚才的 Class Outlets 之上有「Class Actions」。这里我们只需要处理「表示打折以后的价格」,在Class Actions内追加一个Action就可以了。缺省命名为「myAction1: 」。

action

 

追加Action

与控件关联

接下来,我们将做好的Outlet与控件关联起来。在“File's Owner”ICON上点右键,在出现的窗口上可以看到刚才生成的Outlet和Action。如下图:

Outlet

 

每个Outlet的右边都有一个圆圈的选择按钮(鼠标光标移动到其上面后,会变成一个加号),将其拖拽到对应界面上的控件。这之后,从圆圈到控件会有一根线连接起来,控件也会被蓝色的线条框包住。如下图:

Outlet

 

关联之后,Outlet的名称的右侧将表示控件的名称。同样的方法将3个控件都与对应的Outlet关联。如果想要取消关联,点击表示部分的×后就可以了。

Action的接续方法与Outlet一样,也是通过拖拽来实现。这里我们就将「myAction1: 」右边的圆圈按钮与对应的Segmented控件关联。如下图:

Outlet

 

关联之后,会让你选择具体的行为事件,这里因为是更改折扣比率,所以选择「Value Changed」。

action

 

创建文件

截止到现在,我们还没有写过一行代码。其实,在你将Outlet与控件关联的时候,Interface Builder已经代你写了不少程序了。先让我们来确认一下:

选择File's Owner,在Interface Builder菜单上点击[File]→[Write Class Files...]保存文件到(BargainSaleViewController.m)。

action

 

如果已经有文件存在了,就覆盖它。这样,源代码文件就被保存起来了。我们打开来看看。

action

 

Outlet被定义在.h头文件中(BargainSaleViewController.h)。你可以打开它确认一下。「motone」「waribiki」「kekka」3个Outlet,Action「myAction1: 」。

编写Action

接下来我们来实现具体的Action。打开有「myAction1:」的.m文件(BargainSaleViewController.m)。在「myAction1:」函数内用下面的代码来实现

(IBAction)myAction1:(id)sender {

    int kakaku = [[motone text] intValue];

    switch([waribiki selectedSegmentIndex]){
    case 0:
        kakaku = kakaku * (1.f - 0.2f);
        break;
    case 1:
        kakaku = kakaku * (1.f - 0.3f);
        break;
    case 2:
        kakaku = kakaku * (1.f - 0.4f);
        break;
    case 3:
        kakaku = kakaku * (1.f - 0.5f);
        break;
    default:
        break;
    }

    [kekka setText:[NSString stringWithFormat:@"%d", kakaku]];

}

之后编译,就可以启动模拟器来测试了。

action

阅读(812) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~