Как я могу взять индекс конкретной строки, нажав кнопку (ориентация на метод)? - PullRequest
0 голосов
/ 17 февраля 2011

Я сделал таблицу и содержал некоторые значения, у меня есть кодировка кнопки вроде

cell.textLabel.textColor = [UIColor whiteColor];

UIButton *btn=[UIButton  buttonWithType:UIButtonTypeCustom];
[btn setBackgroundColor:[UIColor clearColor]];
[btn setBackgroundImage:[UIImage imageNamed:@"edit_button.png"] forState:UIControlStateNormal];
[btn setFrame:CGRectMake(290, 15, 15, 15)];
[btn addTarget:self action:@selector(editTable:) 
       forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btn];

NSString *cellValue = [myArrayNew objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;

Я хочу нажать на эту кнопку и взять значения из этого конкретного индекса,

как

Али (кнопка здесь) -------- индекс 0 Саджид (кнопка здесь) -------- индекс 1 Роберт (кнопка здесь) -------- индекс 2 RaM (кнопка здесь) -------- индекс 3

Это ячейки таблицы, теперь, как я могу получить индекс при нажатии на эту кнопку?

если вы не получили мой вопрос, вы можете спросить меня снова ...

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Я нашел свой ответ,

Просто напишите следующую кодировку внутри метода нацеливания на кнопку и используйте clickButtonPath в качестве пути индекса. Работает отлично, просто

UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
NSIndexPath *clickedButtonPath = [self.tableView indexPathForCell:clickedCell];
0 голосов
/ 17 февраля 2011

вы бы использовали что-то вроде этого.

- (IBAction)editTable:(UIButton *)sender {
   UIView *contentView = [sender superView];
   UITableViewCell *cell = [contentView superView];
   NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
}

Но сначала вы должны убедиться, что правильно используете ваши клетки. Изменяя свой код следующим образом:

cell = ... dequeue cell ...
if (cell == nil) {
    cell = ... create new cell ...
    UIButton *btn=[UIButton  buttonWithType:UIButtonTypeCustom];
    btn.tag = 194;
    [btn setBackgroundColor:[UIColor clearColor]];
    [btn setBackgroundImage:[UIImage imageNamed:@"edit_button.png"] forState:UIControlStateNormal];
    [btn setFrame:CGRectMake(290, 15, 15, 15)];
    [btn addTarget:self action:@selector(editTable:) 
       forControlEvents:UIControlEventTouchUpInside];
    [cell.contentView addSubview:btn];
}
// if you need to change something for this button you can get it like this:
//UIButton *btn= [cell.contentView viewWithTag:194];
NSString *cellValue = [myArrayNew objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;
0 голосов
/ 17 февраля 2011
btn.tag = indexPath.row;

Затем в (void)editTable:(id)sender:

int row = (UIButton *)btn.tag;
...