2

我有一些 UIButtons,当按下时会触发方法,(IBAction)buttonPressed:(id)sender。现在我为每个(btnPlay,btnStop,btnPause)设置了一个文档标签,但我不相信我可以在Objective C中访问它。我可以在xcode中设置一些东西作为变量,所以当buttonPressed()被触发 我知道哪个按钮(btnPlay、btnStop 或 btnPause)触发了事件?

4

4 回答 4

2

您应该将您的 IBAction 更改为如下所示

-(IBAction)buttonPressed:(UIButton *)button {

    if([button.titleLabel.text isEqualToString:@"Start"]){
        //Do Stuff
    } 

}

通过这种方式,您可以直接将发送者作为按钮访问,而无需任何问题或类型转换,然后您可以使用该isEqualToString方法检查按钮的标题并在 if 语句中运行代码。

您可能还想考虑使用tag几乎所有接口对象都具有的属性。

if(button.tag == 1){
    //Do Stuff
}

UIButton 标签

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