I\'m adding a button to a UITableViewCell programmatically. The method to be run when the button is pressed is - (void) quantityDown:(id)sender rowNumber:(int)rowNum<
Why don't you make a Custom UIButton class
and have the object as property?
See below.
"MyButton.h"
@interface MyButton : UIButton
@property(nonatomic, strong)MyClass *obj;
@end
"MyButton.m"
#import "MyButton.h"
@implementation MyButton
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
@end
Now assign MyButton class
to your actual button in the cell/ or initialize the custom button instead of normal UIButton class
and assign the object directly.
And in your IBAction
where sender=MyButton
- (void) quantityDown:(id)sender{
MyButton *btn = (MyButton *)sender;
//You get the object directly
btn.obj;
}
Doing it this way you can actually access as many properties you want easily. And its useful in other implementations too.
Hope it helps.
Set each button tag as indexPath.row
. Then just declare the function:
- (void)quantityDown:(id)sender
In that method do this:
UIButton *btn = (UIButton *)sender;
Add target like this:
[buttonDown addTarget:self action:@selector(quantityDown:) forControlEvents:UIControlEventTouchUpInside];
From btn.tag
you can get the row number. Hope this helps. :)
Button can carry only one input so keep your sender and rowNum
same so that it can be handled easily
In cell for row method.
UIButton *b = [UIButton buttonWithType:UIButtonTypeContactAdd];
b.tag = indexPath.row;
[b addTarget:self action:@selector(quantityDown:) forControlEvents:UIControlEventTouchUpInside];
Your method
- (void)quantityDown:(id)sender
{
NSLog(@"%d", sender.tag);
}
hope this will help...