Натомість вам слід використовувати цей метод:
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 вирішить змінити структуру подання.