我有一些 UIButtons,当按下时会触发方法,(IBAction)buttonPressed:(id)sender。现在我为每个(btnPlay,btnStop,btnPause)设置了一个文档标签,但我不相信我可以在Objective C中访问它。我可以在xcode中设置一些东西作为变量,所以当buttonPressed()被触发 我知道哪个按钮(btnPlay、btnStop 或 btnPause)触发了事件?
问问题
219 次
4 回答
2
您应该将您的 IBAction 更改为如下所示
-(IBAction)buttonPressed:(UIButton *)button {
if([button.titleLabel.text isEqualToString:@"Start"]){
//Do Stuff
}
}
通过这种方式,您可以直接将发送者作为按钮访问,而无需任何问题或类型转换,然后您可以使用该isEqualToString
方法检查按钮的标题并在 if 语句中运行代码。
您可能还想考虑使用tag
几乎所有接口对象都具有的属性。
if(button.tag == 1){
//Do Stuff
}
Switch 语句也是处理不同事件的一种很好的干净方式。
switch (button.tag) {
case 1:
// Do Something
break;
default:
// Do Default Action
break;
}
于 2013-06-13T22:43:19.800 回答
1
您可以定义在@selector 之后按下按钮时必须调用哪个方法,在这种情况下为 playVideo 方法。
[videoButton setTitle:@"play video" forState:UIControlStateNormal];
[videoButton setBackgroundImage:nil forState:UIControlStateNormal];
[videoButton addTarget:self action:@selector(playVideo:)forControlEvents:UIControlEventTouchUpInside];
于 2013-06-13T22:38:49.793 回答
0
这就是sender
争论的意义所在——您可以将它与一系列if
语句中的每个按钮进行比较,以查看是哪个按钮发送了该消息。
于 2013-06-13T22:34:10.530 回答
0
每个UIButton
人都有一个titleLabel
属性,即 a UILabel
。检查sender.titleLabel.text
并与三个字符串进行比较。
或者,您也可以通过 Xcode 中的 Attributes Inspector 或使用tag
代码中的属性为每个按钮分配一个标签(通常是一个整数)。然后检查sender.tag
您的操作方法。
于 2013-06-13T22:34:46.553 回答