Reputation: 1605
How can I detect which UIButton has been tapped:
-(void) topScorer {
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchDown];
[button1 setTitle:@"Button1" forState:UIControlStateNormal];
button1.frame = CGRectMake(16, self.view.bounds.size.height*0.6, 60, 60);
UIImage *img1 = [UIImage imageNamed:@"img1.png"];
button1.layer.cornerRadius = 10;
button1.layer.masksToBounds = YES;
[button1 setImage:img1 forState:UIScrollViewDecelerationRateNormal];
button1.tag = 1;
[self.view addSubview:button1];
UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
[button2 addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchDown];
[button2 setTitle:@"Button2" forState:UIControlStateNormal];
button2.frame = CGRectMake(92, self.view.bounds.size.height*0.6, 60, 60);
UIImage *img2 = [UIImage imageNamed:@"img2.png"];
button2.layer.cornerRadius = 10;
button2.layer.masksToBounds = YES;
[button2 setImage:img2 forState:UIScrollViewDecelerationRateNormal];
button2.tag = 2;
[self.view addSubview:button2];
}
-(void) buttonClicked: (id)sender {
// How can I detect here which button is tapped?
// For Example, I want to do this:
// if button1 is pressed, do something
// if button 2 is pressed, do another thing
}
Upvotes: 0
Views: 1109
Reputation: 596
Store the button in a property on your view controller and then check against that property:
@property (nonatomic, weak) UIButton *buttonOne;
- (void)buttonTapped:(id)sender {
if (sender == buttonOne) {
// button one was tapped
}
}
or simply assign different selectors to each button.
[buttonOne addTarget:self
action:@selector(buttonOneTapped:)
forControlEvents:UIControlEventTouchUp];
[buttonTwo addTarget:self
action:@selector(buttonTwoTapped:)
forControlEvents:UIControlEventTouchUp];
Upvotes: 1
Reputation: 3280
Cast your sender to a UIButton and compare the tag value.
UIButton *button = (UIButton *)sender;
if (button.tag == 1) {
} else {
}
Upvotes: 2