Определить значение строки ячейки при нажатии кнопки в этой ячейке в iPhone? - PullRequest
3 голосов
/ 28 декабря 2010

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

Ответы [ 4 ]

5 голосов
/ 28 декабря 2010

Вам нужно, чтобы ваш UIViewController получил событие, создав целевое действие от UIButton до UIViewController, например:

[button addTarget:self action:@selector(cellButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

Затем в вашем UIViewController метод действия, вы можете использовать UITableView s indexPathForCell: метод, чтобы получить правильный NSIndexPath:

- (void) cellButtonClicked: (id) sender {
   UIButton *btn = (UIButton *) sender;
   UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview];
   NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
   //do something with indexPath...
}
2 голосов
/ 16 января 2014

Это альтернатива, которая не падает, когда яблоко меняет иерархию представления.В основном найдите начало кнопки в системе координат табличного представления.Как только вы узнаете, что можете найти NSIndexPath строки, в которой находится point.

- (void)buttonTapped:(UIButton *)button
{
    CGPoint buttonOrigin = [button convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonOrigin];
}
0 голосов
/ 23 марта 2016

Этого можно добиться с помощью более простого решения.

Поскольку в большинстве случаев каждая ячейка представляет объект внутри массива, вам необходимо определить свойство в пользовательском классе ячеек, которое представляет идентификатор ячейки (в вашем массиве) или идентификатор ячейки, определенный в БД сервера и когда кнопка была нажата, вы можете легко получить ее через self.id - идентификатор представляет свойство идентификатора ячейки.

0 голосов
/ 17 декабря 2013

согласен с Будет , вы должны повторить в iOs7

for (UIView *parent = [btn superview]; parent != nil; parent = [parent superview]) {
    if ([parent isKindOfClass: [UITableViewCell class]]) {
        UITableViewCell *cell = (UITableViewCell *) parent;
        NSIndexPath *indexPath = [self.tableView indexPathForCell: cell];
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...