我有一些UIButtons,当按下方法时,(IBAction)buttonPressed:(id)sender。现在我为每个设置了一个文档标签(btnPlay,btnStop,btnPause),但我不相信我可以在Objective C中访问它。我可以在xcode中设置什么作为变量,所以当buttonPressed()被解雇我知道哪个按钮(btnPlay,btnStop或btnPause)触发了事件?
答案 0 :(得分:2)
您应该将IBAction更改为以下内容
-(IBAction)buttonPressed:(UIButton *)button {
if([button.titleLabel.text isEqualToString:@"Start"]){
//Do Stuff
}
}
通过这种方式,您可以直接访问发件人,无需任何问题或类型转换,然后您可以使用isEqualToString
方法检查按钮的标题并在if语句中运行代码。 / p>
您可能还想考虑使用几乎所有接口对象都具有的tag
属性。
if(button.tag == 1){
//Do Stuff
}
Switch语句也是处理不同事件的一种很好的干净方式..
switch (button.tag) {
case 1:
// Do Something
break;
default:
// Do Default Action
break;
}
答案 1 :(得分:1)
你可以定义在@selector之后按下按钮时必须调用哪个方法,在本例中是playVideo方法。
[videoButton setTitle:@"play video" forState:UIControlStateNormal];
[videoButton setBackgroundImage:nil forState:UIControlStateNormal];
[videoButton addTarget:self action:@selector(playVideo:)forControlEvents:UIControlEventTouchUpInside];
答案 2 :(得分:0)
这就是sender
参数的含义 - 您可以将它与if
语句链中的每个按钮进行比较,以查看哪一个发送了该消息。
答案 3 :(得分:0)
每个UIButton
都有一个titleLabel
属性,即UILabel
。检查sender.titleLabel.text
并将其与三个字符串进行比较。
或者,您也可以通过Xcode中的Attributes Inspector或代码中的tag
属性为每个按钮分配一个标记(通常为整数)。然后在操作方法中查看sender.tag
。