iPhone - Как определить, в которой ячейке кнопка была нажата в пользовательском UITableViewCell

Все ответы здесь лучше, но на всякий случай ... Есть способ получить 10 последних добавленных записей. (это довольно ненадежно :)) тем не менее вы можете сделать что-то вроде

SELECT * FROM table LIMIT 10 OFFSET N-10

N - должно быть общее количество строк в таблице (SELECT count (*) FROM table). Вы можете поместить его в один запрос, используя подготовленные запросы, но я не буду вдаваться в подробности.

20
задан Tai Squared 22 June 2009 в 22:24
поделиться

5 ответов

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

10
ответ дан 29 November 2019 в 23:23
поделиться

Вы можете получить доступ к кнопкам superview , чтобы получить UITableViewCell , который содержит вашу кнопку, но если вам просто нужен номер строки, вы можете использовать tag свойство, как в предыдущем посте.

1
ответ дан 29 November 2019 в 23:23
поделиться

У меня такой же сценарий. Для этого я создал настраиваемую ячейку. Я добавил два свойства, раздел и строку. Я также добавил владельца, которым будет мой производный класс TableViewController. Когда запрашиваются ячейки, я устанавливаю раздел / строку на основе indexPath вместе с владельцем.

cell.section = indexPath.section cell.row = indexPath.row cell.owner = self

Следующее, что я сделал, - когда я создал кнопки, я связал события кнопки с ячейкой, а не с tableViewController. Обработчик событий может прочитать запись раздела и строки и отправить соответствующее сообщение (или событие) в TableViewController. Это значительно упрощает ведение домашнего хозяйства и техническое обслуживание за счет использования существующих методов и обслуживания, а также сохранения максимальной автономности ячейки. Поскольку система уже отслеживает ячейки, зачем делать это дважды!

4
ответ дан 29 November 2019 в 23:23
поделиться

Гораздо более простые решения состоит в том, чтобы определите вашу кнопку Callback с (ID) отправителем и используйте ее, чтобы выкопать индекс строки таблицы. Вот какой-то пример код:

- (IBAction)buttonWasPressed:(id)sender
{
    NSIndexPath *indexPath =
        [self.myTableView
         indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
    NSUInteger row = indexPath.row;

    // Do something with row index
}

, скорее всего, вы использовали тот же индекс строки для создания / заполнения ячейки, поэтому следует тривиально определить, что ваша кнопка теперь должна сделать. Не нужно играть с тегами и пытаться держать их в порядке!

Разъяснение: Если вы используете в настоящее время - (Ibaction) Buttonwasured; просто переопределите его как - (Ibaction) Buttonwasured: (ID) отправителя; Дополнительный обратный аргумент Там нет необходимости делать что-то дополнительное, чтобы получить его. Также не забудьте подключить вашу кнопку до нового обратного вызова в интерфейсе Builder!

21
ответ дан 29 November 2019 в 23:23
поделиться

Еще проще:

-(IBAction) buttonPressed {
    NSIndexPath *myIndexPath = [(UITableView *)self.superview indexPathForCell: self];
    // do whatever you need to do with the information
}
3
ответ дан 29 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: