多个按钮调用相同的功能(函数知道哪个按钮调用)

时间:2012-12-20 05:59:57

标签: objective-c ios xcode

我有这个按钮代码,它在两个按钮(代码的一部分)中类似

btn.frame=CGRectMake(600,400,30,30);]
btn.addTarget:self actionL@selector(authButtonAction)forControlEvents:UIControlEventTouchUpInside]

和函数(虚拟代码)

-(void)authButtonAction {
    if btn1 was clicked btn1.caption=y else btn1.caption=2
}

我的按钮工作,我的功能被调用,但我想要做的是以某种方式找出点击了哪个按钮...将其传递给authButtonAction。因为这样可以避免编写X函数,我可以在一个函数中使用if语句。

4 个答案:

答案 0 :(得分:2)

为您的按钮设置标签..

#define TAG_BUTTON_ONE 1
#define TAG_BUTTON_TWO 2

oneButton       =  [[UIButton alloc] ......];
oneButton.tag   =  TAG_BUTTON_ONE;
[oneButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
-----
-----

twoButton       = [[UIButton alloc] ....];
twoButton.tag   = TAG_BUTTON_TWO;
[twoButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
---
--

在按钮处理程序中,检查发件人的标签

-(void) buttonClicked:(UIButton*)sender{
   if(sender.tag == TAG_BUTTON_ONE){
      //handle button one click
   }else if(sender.tag == TAG_BUTTON_TWO){
      //handle button 2 click
   }   
}

答案 1 :(得分:0)

btn.Tag设置为按钮的ID,然后使用它来确定按下了哪个按钮。

答案 2 :(得分:0)

您的按钮方法的名称末尾应该有一个冒号。该按钮将自己作为sender参数传递。您可以查询该按钮以找出单击的按钮(基于其标题或标记)。

答案 3 :(得分:0)

您可以为按钮指定标签,然后可以在操作方法中检查tappedButton的标签。

-(IBAction)ButtonPressed:(id)sender
{
UIButton *pressedButton = (UIButton *)sender;
int buttonTag = pressedButton.tag;
if (buttonTag==1)
{
NSLog(@"Button 1 Pressed");
}
else
{
NSLog (@"Button 2 Pressed");
}
}