iPhone開發入門(6)— Action與Objective-C

來源:互聯網
上載者:User

我們先來分析一下上一回初次接觸的Objective-C代碼。

  (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的函數調用

函數調用首先用 [ ] 來包住實現代碼。函數調用的對象叫做接收器(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文法來區分各種情形:
 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的函數調用

 

「setText」函數的參數是一個字串,而「kakaku」變數是一個整數,所以我們先將整數變換為字串型「NSString」。這裡我們使用到了「NSString」的字串格式函數「stringWithFormat」。最後再通過Label控制項的Outlet「kekka」經具體的值表示出來。

在以後的學習中,我們將更加深入地學習Objective-C的各種文法和思想

摘自:易飛揚

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.