我有兩個調用相同功能的按鈕。這功能簽名 - (IBAction)eraseTextField {...}
我想弄清楚什麼按鈕調用的函數。所以,我想對函數簽名是這樣的哪個按鈕叫做函數?
- (IBAction)eraseTextField: (id)sender {...}
。
有沒有辦法讓系統知道調用對象的ID發送給它調用一個函數?謝謝您的幫助。
我有兩個調用相同功能的按鈕。這功能簽名 - (IBAction)eraseTextField {...}
我想弄清楚什麼按鈕調用的函數。所以,我想對函數簽名是這樣的哪個按鈕叫做函數?
- (IBAction)eraseTextField: (id)sender {...}
。
有沒有辦法讓系統知道調用對象的ID發送給它調用一個函數?謝謝您的幫助。
如果使用- (IBAction)eraseTextField: (id)sender
它將與Interface Builder的工作,你的思維方式和發件人將在IB發送方法的對象的ID。
您可以選擇與任何- (IBAction)eraseTextField and - (IBAction)eraseTextField:(id)sender
都工作得不錯,並且發送者寫你的方法將被髮送對象的ID。
您可以指定標籤屬性 例如 //使用代碼
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
}
Err,`sender`不會是對象的'id',它會是對象本身。 – psychotik 2010-12-22 03:44:28
那麼對象本身是一個ID – 2010-12-22 03:45:56