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