Вместо этого вам действительно стоит использовать этот метод:
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
Быстрая версия:
let buttonPosition = sender.convert(CGPoint(), to:tableView)
let indexPath = tableView.indexPathForRow(at:buttonPosition)
Это даст вам indexPath
основание на позиции нажатой кнопки. Тогда вы просто позвоните, cellForRowAtIndexPath
если вам нужна ячейка или indexPath.row
номер строки.
Если вы параноик, вы можете проверить, if (indexPath) ...
прежде чем использовать его, на случай, если indexPath
для этой точки в представлении таблицы не будет найдено.
Все остальные ответы, скорее всего, сломаются, если Apple решит изменить структуру представления.