回答
(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