Ячейки кастомные? Отлично. Смотри:
1.создай сабкласс UIButton (IndexedButton например), добавь в него свойство
@property (nonatomic) NSIndexPath *button_indexPath;
В IndexedButton.m сделай @synthesize button_indexPath;
2.В классе твоей кастомной ячейки в .h файле подключаешь этот IndexedButton:
#import "IndexedButton.h"
и кнопку, которую надо нажимать, делаешь не UIButton, a
IndexedButton:
@property (nonatomic, retain) IBOutlet IndexedButton *buttonInCell;
В m-файле кастомной ячейки сделай @synthesize buttonInCell;
Там же ты эту кнопку и добавляешь в ячейку в методе:
-(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self){
buttonInCell = [[IndexedButton alloc] initWithFrame:CGRectMake(0,0,50,30)];
[self addSubview:buttonInCell];
// здесь еще твой код
}
return self;
}
3.Почти все. Теперь в главном классе, метод
cellForRowAtIndexPath:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath {
// тут подключение твоей кастомной ячейки
if (cell == nil) {
//Создание ячейки
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
cell.buttonInCell.button_indexPath = indexPath; //присваиваем кнопке значение indexPath
[cell.buttonInCell addTarget:self action:@selector(MyMethod:) forControlEvents:UIControlEventTouchUpInside]; //устанавливаем обработчик для нажатия кнопки
// здесь еще твой код
return cell;
}
4.Финиш- метод MyMethod:
-(IBAction)MyMethod:(id)sender{
NSIndexPath *path = [sender button_indexPath]; //извлекаем IndexPath с кнопки.
//наслаждаемся результатом
NSLog(@"секция = %i", path.section);
NSLog(@"ряд = %i", path.row);
}
Надеюсь, разъяснил доступно.