什么作为IBAction的发件人传递?

时间:2010-11-15 06:14:36

标签: objective-c

当我使用代码-(IBAction) onClick1: (id) sender;时,将以sender传递什么?我试图使用发送者作为对象ID并失败(我的意思是我使用了代码sender.tag并且它没有返回)。

我确信当我在这里使用- (void)buttonTouched1:(UIButton *)sender;时,发件人应该充当对象ID。

2 个答案:

答案 0 :(得分:6)

发件人通常是调用onClick1邮件的对象。例如,如果您有一个按钮并将 - (IBAction)onClick1:(id)发件人消息与按钮的“touch up inside”事件相关联,那么当您点击按钮时,表示该按钮的对象将被传递到onClick1:

-(IBAction)onClick1:(id)sender
{
   UIButton *button = (UIButton*)sender;
   NSLog(@"%@", button);
}

答案 1 :(得分:4)

sender变量通常是发送操作消息的对象(这不完全是保证 - 例如,您可以自己发送操作消息并传递任何您想要的内容 - 但这就是它应该如何工作的方式。)

您不能只在这些方法中编写sender.tag因为点表示法要求对象具有静态类型,因此编译器知道属性对应的消息。如果您改为编写[sender tag],它将起作用。