How to define which button pressed if they both have same IBAction?
15,504
Solution 1
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.
Solution 2
Something along these lines... assuming button1 and button2 are in your header file.
- (IBAction)buttonPressed:(UIButton *)button {
if (button == button1) {
} else if (button == button2) {
}
}
Or set the tag in Interface Builder and check for the tag.
- (IBAction)buttonPressed:(UIButton *)button {
if (button.tag == 1) {
} else if (button.tag == 2) {
}
}
Tags AREN'T zero-based. Use 1 or greater.
Related videos on Youtube
Author by
Tunyk Pavel
Updated on April 16, 2020Comments
-
Tunyk Pavel almost 4 years
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?