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?
To connect the action to multiple buttons: in Interface Builder, right-click ViewController in the view hierarchy, then left-click to drag the action connection to each button.
@IBAction is similar to @IBOutlet , but goes the other way: @IBOutlet is a way of connecting code to storyboard layouts, and @IBAction is a way of making storyboard layouts trigger code. This method takes one parameter, called sender . It's of type UIButton because we know that's what will be calling the method.
First you want to select the button on the Storyboard, you then press the Ctrl Key and while you are pressing down on the key you then click on the button and drag from the Storyboard onto the IBAction block in the ViewController.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With