我是Button按鈕,我有許多行為,
又可以與使用者互動,比如說使用者可以按下我等等的。
|
我是iOS工程師,
Button按鈕啊,我要知道你什麼時候被按下,
好執行我要為使用者執行的程式。
|
iOS工程師,我是Controller,
我又聽到您的需求了,同樣的問題,
Interface Builder以xml的方式保存了Button按鈕,
但我並不知道您要關注Button按鈕的的哪個行為?
因此你必須在我這個Controller上產生一個動作 - IBAction,
讓我Controller與Interface Builder知道,
Button按鈕的某些行為必須對應Controller的哪個方法,
而後即可將你要為使用者的事寫在對應的方法中,
即可為使用者執行想要的程式了!
比如按鈕按下時,讓背景變顏色等等的。
|
第1步:建立一個名為"IBAction"的"Single View Application"專案,並加入一個Button按鈕(Round Rect Button)至畫面中。
第2步:連結Button按鈕的"Touch In Side"事件
- 2.1 對Button按鈕按右鍵打開選單。
- 2.2 找到代表按鈕被按下的"Touch In Side"事件,並拖拉右方圓點至ViewController類別的定義中(.h)。
- 2.3 於"Name"欄位中屬性touch,並按下"Connect"。
- 2.4 此時會產生一個名為"touch"方法,其中回傳值型別變成特殊的標記"IBAction",其沒有任何作用,只用以表示此方法可與Interface Builder連結,當然左邊的內含小圓點的圓點,即表示已跟Interface Builder(寫到xml檔中)連結在一起了。
第3步:打開"ViewController.m"檔案,並找到touch:方法,於其中加入變更底層View背景為藍色,與變更Button按鈕字樣為"OK"的程式。
- (IBAction)touch:(id)sender {
[self.view setBackgroundColor:[UIColor blueColor]];
[((UIButton*)sender) setTitle:@"OK"
forState:UIControlStateNormal];
}
第4步:執行後對Button按鈕,這時您會發現,Button按鈕真的呼叫touch方法,並將底層View的顏色變更為藍色,而Button按鈕的文字也變更為"OK"。
檔案連結:IBAction.zip
運作原理:IBAction同IBOutlet一樣,皆是讓Interface Builder與Controller作連結,IBAction是連結事件,而IBOutlet則連結物件(如View元件等)。對同一個物件(如View元件),IBAction與IBOutlet並不需要同時使用,就看您的需求而定,看你是要連結事件還是物件,但兩者並沒有強制要同時連結。