回答
(id)sender is the object which sent the message to that selector.
代碼示例:
- (IBAction)submitButton:(id)sender {
UIButton *button = (UIButton *)sender;
[button setEnabled:NO];
[button setTitle:@"foo" forState:UIControlStateDisabled];
}
馬特加洛韋描述的(id) sender
的含義在行動上iPhone開發SDK論壇正是如此:
(ID)發送器是發送消息到該選擇器的對象。這就像在你傳遞給函數的控制委託功能等
你會使用這個,如果你有2個對象,其被調用一個選擇,你希望他們之間的區別。當然,你可以使用兩種不同的函數,但它通常更簡潔,重用代碼的次數更少。
查看 UIControl Class Reference瞭解更多詳情。
爲一個例子,的UITextField具有當的UITextField編輯結束觸發一個委託:
-(IBAction) editingEnded:(id) sender {
// the cast goes here, lets assume there's more than one UITextfield
// in this Owner and you want to know which one of them has triggered
// the "editingEnded" delegate
UITextField *textField= (UITextField*)sender;
if(textfield == iAmTheLastTextField)
{
// for example login now.
[self login];
}
}
這個答案實際上比被接受的答案要好... – 2012-05-13 19:48:57
「發送者」是變量的名稱。
「(ID)」是指該變量的類型是「ID」,即表示「任何對象」的(你可以看到它的對象層次結構的頂部,如果你想
的名稱該方法是按鈕:和要求任何種1個參數
此方法將被鏈接到一個按鈕上的UI此UI的代表將接收該呼叫,並且必須具有的UIButton的參考。有時候你不需要它,有時你需要訪問那個UIButton來改變他的屬性,例如
它是Cocoa的target-action mechanism的一部分,它是一種物體可以相互通信的方式。在響應於事件(例如,鼠標點擊),一個對象(通常是某種控制)將消息發送給另一個對象。發送方被調用,以及,「發送者」,接收方是「目標」和消息是「動作」。
您可以使用它在目標的消息處理程序,以獲取有關發送方的動作的附加信息。
如果有一個例子正是如何獲得附加信息,這將更有用:) – 2013-10-19 19:39:07
@GForty:不可能,因爲'id'是一個通用對象。一般來說,它是一個NSObject,但類型不再那麼確定。如果你需要額外的信息,你必須知道對象實現了什麼接口,並向它發送適當的消息(如在gontnull的示例中,發送者被假定爲一個按鈕)。 – outis 2013-10-20 02:31:37
我從Rabskatran教訓。但我wouldlike糾正說:「發件人」是變量的名稱的唯一部分。它應該是(來自Apple文檔 - https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html):
「動作消息調用的方法具有特定的簽名:單個參數持有對啓動動作消息的對象的引用;按照慣例,此參數的名稱是發件人。例如,
- (void)moveToEndOfLine:(id)sender; //從NSResponder.h」
所以它是一個參數!
下面是幾個按鈕,通過標籤信息傳遞給一個IBAction爲(ID)發送的例子。這個視頻演示的概念(ID)發送者在行動,我認爲是非常有用的。
- 1. 什麼是 「(ID)發送」
- 2. C原始套接字發送地址的目的是什麼?
- 3. 獲取(id)發送者(iOS)的座標
- 4. 爲什麼(ID)發送的,而不是(的UIButton *)寄件人
- 5. 在將項目ID發送到服務器之前積累項目ID的最佳方式是什麼?
- 6. 什麼是連接發送者和接收者的好設計模式?
- 7. 什麼是C#目的?
- 8. c#開發者打入Tkinter的最佳方式是什麼?
- 9. 發送(2)接收SIGPIPE的目的是什麼?
- 10. 什麼是Facebook開發者控制檯?
- 11. 發送給jQuery的參數是什麼?
- 12. 爲什麼WeakEventManager在發送者不是名義值時不會觸發事件?
- 13. C#爲什麼HttpClient.PostAsJsonAsync發送GET請求?
- 14. 什麼是好的Twitter PHP libs發送消息給新的追隨者?
- 15. POST發送什麼
- 16. 爲什麼我的瀏覽器不發送任何引用者?
- 17. 爲什麼UIMenuItem動作的發送者始終爲零?
- 18. 本網站發送的「每頁項目」的發佈參數是什麼?
- 19. 什麼是自定義Lambda授權者響應的主要ID?
- 20. 初學者Android爲什麼「id」是R.id的「Unknown member」?
- 21. 在C++中imbue的目的是什麼?
- 22. Mac - 開發者ID - 代碼簽名 - 什麼得到簽名?
- 23. 什麼是UDP發送速率?
- 24. Android發送短信意圖是什麼?
- 25. 什麼是從unity3d發送json
- 26. 什麼是發送與用戶輸入
- 27. 什麼是目標C的iPhone開發了「代表」?
- 28. 什麼是C/C++開發環境
- 29. 目標C中的^是什麼意思?
- 30. 什麼是目標C的「stringWithContentsOfURL」替代?
注意:您可以[格式線爲代碼(http://meta.stackexchange.com/questions/22186/how-do-i- format-my-code-blocks),通過縮進它們四個空格,相比之下,前導'-'會給你一個list元素,就像你在que中看到的那樣Stion的。編輯器工具欄中的「{}」按鈕可以爲您做到這一點。編輯你的問題並嘗試一下。單擊編輯器工具欄中的橙色問號以獲取更多信息和格式化提示。 – outis 2011-04-07 08:35:05