ios找出了举办活动的按钮

时间:2011-10-17 12:45:09

标签: iphone objective-c ios

我一直在寻找解决方案,但我似乎无法找到它。我在界面上有两个按钮。两者都调用相同的动作。有没有办法找出引发事件的按钮?我是iphone dev的新手,所以请给我一些指导,即使它看起来太微不足道了。

此致

khizar

4 个答案:

答案 0 :(得分:6)

在每个事件中你都有(id)发送者参数,它是触发事件的对象。你可以将它与你的一个按钮进行比较,如下所示:

-(IBAction)clicked:(id)sender {
    if ((UIButton *)sender == myButton1) {
        // you have clicked button 1
    }
}

您还可以设置按钮的tag属性,并在点击功能中检查此参数:

myButton1.tag = 1;
myButton2.tag = 2;
-(IBAction)clicked:(id)sender {
    if ([[sender] tag] == 1) {
        // you have clicked button 1
    }
}

答案 1 :(得分:3)

您的方法是-(void)buttonClicked:(id)sender,其中sender是单击的按钮。将其投放到UIButton&就行了!要识别它是哪个按钮,请在创建按钮时设置标签属性。检查此方法中的标记。

答案 2 :(得分:1)

您应该在.h文件中声明两个按钮,然后在您的方法中,您可以通过将发件人转换为UIButton来执行以下操作。因为我们使用指针,所以我们可以检查内存地址以了解发送按钮是什么。这不是我的头脑。可能甚至没有必要施放发件人...

.h文件

UIButton* button1;
UIButton* button2;

.m文件

-(void) someMethod:(id)sender
{
    if((UIButton*)sender == button1)
    {
         //code for button1
    }
    else if((UIButton*)sender == button2)
    {
         //code for button2
    }
}

答案 3 :(得分:0)

您可以为每个按钮指定唯一标记。我们假设您有两个按钮(Button1和Button2)。您可以通过执行以下操作在故事板或代码中分配标记。

button1.tag =1;
button2.tag =2;

现在,在您的操作方法中,您可以检查发件人是否是按钮,如果是,则按一个临时按钮并将其设置为发件人。当然,您必须将发件人转换为UIButton。现在,您可以检查,单击了哪个按钮。示例代码 -

-(IBAction)buttonClicked:(id)sender{

if([sender isKindOfClass:[UIButton class]]){
    UIButton *tempButton = (UIButton*)sender;

    if(tempButton.tag == 1){
        NSLog(@"Button1 is clicked");
    }
    else if(tempButton.tag == 2){
        NSLog(@"Button2 is clicked");
    }
  }
}