确定在Objective C中触发了哪个UIButton事件

时间:2013-06-13 22:32:23

标签: ios uibutton

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

4 个答案:

答案 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
}

UIButton Tag

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