How to define which button pressed if they both have same IBAction?

Tunyk Pavel picture Tunyk Pavel · Apr 4, 2011 · Viewed 15.5k times · Source

I have two UIButtons (I create them using IB), which connected to File's owner with the same IBAction, how can i define which of them are pressed?

Answer

Bartosz Ciechanowski picture Bartosz Ciechanowski · Apr 4, 2011

Your action can be implemented like this:

- (IBAction) buttonTapped: (id) sender
// you can also replace id with UIButton*

Then inside this method you can check by -isEqual: method

- (IBAction) buttonTapped: (id) sender
{
   if ([sender isEqual:referenceToOneOfYourButtons]) {
   // do something
   }
   else if ([sender isEqual:referenceToTheOtherButton]) {
   ...
   }
}

Alternatively you can set up different values to tag property of buttons and then:

- (IBAction) buttonTapped: (UIButton*) sender
{
   const int firstButtonTag = 101;
   const int otherButtonTag = 102;

   if (sender.tag == firstButtonTag) {
   ...
   }
   else if (sender.tag == otherButtonTag) {
   ...
   }
}

You need to set up this tag either in your .xib or in code.