2010-12-22 23 views
2

我有兩個調用相同功能的按鈕。這功能簽名 - (IBAction)eraseTextField {...}
我想弄清楚什麼按鈕調用的函數。所以,我想對函數簽名是這樣的哪個按鈕叫做函數?

- (IBAction)eraseTextField: (id)sender {...}
有沒有辦法讓系統知道調用對象的ID發送給它調用一個函數?謝謝您的幫助。

回答

3

如果使用- (IBAction)eraseTextField: (id)sender它將與Interface Builder的工作,你的思維方式和發件人將在IB發送方法的對象的ID。

您可以選擇與任何- (IBAction)eraseTextField and - (IBAction)eraseTextField:(id)sender都工作得不錯,並且發送者寫你的方法將被髮送對象的ID。

+2

Err,`sender`不會是對象的'id',它會是對象本身。 – psychotik 2010-12-22 03:44:28

+0

那麼對象本身是一個ID – 2010-12-22 03:45:56

1

您可以指定標籤屬性 例如 //使用代碼

myButton1.tag = 1; 
myButton1.tag = 2; 

使用的建設者,去屬性檢查器並設置標記字段

然後 (IBAction爲)eraseTextField //:(ID)發送

你可以看到它是哪個標籤,例如

switch(sender.tag) { 
    case 1: //button 1 clicked 
    break; 
    case 2: //button 2 clicked 
    break; 
    default: 
    break; 
} 

這不是一個很好的方法,但它的工作原理。爲了便於閱讀,您可以將整數分配給一個常量。如果該按鈕未在文件所有者中鏈接,則可以使用此方法。如果它被鏈接,那麼你可以直接比較兩者。 例如

if (myButton1 == sender) { 
    //button 1 clicked 
}