iPhone开发入门(6)— Action与Objective-C


  • 博主:易飞扬
  • 原文链接 : http://www.yifeiyang.net/iphone-development-introduction-6-action-and-objective-c/
  • 转载请保留上面文字。
  • iPhone开发入门(6)--- Action与Objective-C

    我们先来分析一下上一回初次接触的Objective-C代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    - (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]];
    
    }

    这里的代码是使用Segmented Control实现折扣率变化时的Action。让我们从最初的代码开始。

    取出值

    Text Field控件中取得输入值

    首先,我们取出用户输入的商品原价。前面已经介绍过了,控件的值都是通过Outlet来得到的。这里Text Field的Outlet是「motone」,其代码如下:

    1
    int kakaku = [[motone text] intValue];

    等号右边就是通过Outlet得到值的方法。将其赋值到变量kakaku中。

    Segmented Control控件中取得值

    接下来我们从Segmented Control控件的Outlet「waribiki」中取得其设定值。这里,我们取出的是Segmented Control控件中的「第几个按钮被按下」。不同的按钮对应不同的折扣率。比如最左边的按钮是20%。

    1
    [waribiki selectedSegmentIndex]

    这里最左边的是索引是0,最右边是3。

    Objective-C的语法

    接触过C语言编程的朋友也许很快能适应Objective-C的语法的语法,毕竟它是由C语言演化过来的语言(其中大量继承了Smalltalk语言的思想)。我们以上面两个控件为例,来学习一下它的基本语法。

    Objective-C call

    Objective-C的函数调用

    函数调用首先用 [ ] 来包住实现代码。函数调用的对象叫做接收器(receiver,可以理解为对象实例)。

    用Interface Builder配置的控件Outlet就是接收器。接收器与函数(Objective-C中叫做消息)之间用空格分开。用[ ]括住的一个整体就是一次函数调用。

    你也可以嵌套的使用这样的函数调用形式。比如从Text Field控件中取得输入值的时候,就是先在「motone」中执行了「text」,取出具体的文字对象,然后以其为接收器来执行「intValue」消息。这样,我们最终得到的结果就是一个整形的值。

    计算与表示结果

    接下来我们来计算打折后的价格。由商品原价「kakaku」和由Segmented Control控件得到的打折率需要计算出商品打折后的价格。比如选择最左边20%的时候,计算公式如下:

    1
    kakaku = kakaku * (1.f - 0.2f);

    小数后面的「f」表示「float」。如果将整数作为小数来使用的情况下,使用「1.f」而不是「1f」。

    不同的折扣率需要不同的计算方法,这里使用switch语法来区分各种情形:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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;
    }

    接下来我们使用Label控件的Outlet「kekka」来表示计算的到得打折扣价格「kakaku」。

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

    与上面的函数调用不同,这里增加了参数。

    Objective-C call

    Objective-C的函数调用

    「setText」函数的参数是一个字符串,而「kakaku」变量是一个整数,所以我们先将整数变换为字符串型「NSString」。这里我们使用到了「NSString」的字符串格式函数「stringWithFormat」。最后再通过Label控件的Outlet「kekka」经具体的值表示出来。

    在以后的学习中,我们将更加深入地学习Objective-C的各种语法和思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值