我有两个调用相同功能的按钮。功能签名是
- (IBAction)eraseTextField {...}
我想弄清楚什么按钮叫做函数。所以我希望函数签名就像
- (IBAction)eraseTextField: (id)sender {...}
。
有没有办法让系统知道将调用对象的id发送给它调用的函数?谢谢您的帮助。
答案 0 :(得分:3)
如果您使用- (IBAction)eraseTextField: (id)sender
,它将以您认为的方式使用界面构建器,发件人将成为在IB中发送方法的对象的ID。
您可以选择使用- (IBAction)eraseTextField and - (IBAction)eraseTextField:(id)sender
编写方法,并且发件人将是发件人对象的ID。
答案 1 :(得分: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;
}
这不是一个很好的方法,但它有效。为了便于阅读,您可以将整数分配给常量。如果按钮未在文件所有者中链接,则可以使用此方法。如果它已链接,那么您可以直接比较两者。 e.g。
if (myButton1 == sender) {
//button 1 clicked
}