Bạn thực sự nên sử dụng phương pháp này thay thế:
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
Phiên bản Swift:
let buttonPosition = sender.convert(CGPoint(), to:tableView)
let indexPath = tableView.indexPathForRow(at:buttonPosition)
Điều đó sẽ cung cấp cho bạn indexPath
dựa trên vị trí của nút đã được nhấn. Sau đó, bạn chỉ cần gọi cellForRowAtIndexPath
nếu bạn cần ô hoặc indexPath.row
nếu bạn cần số hàng.
Nếu hoang tưởng, bạn có thể kiểm tra if (indexPath) ...
trước khi sử dụng nó đề phòng trường hợp indexPath
không tìm thấy điểm đó trên chế độ xem bảng.
Tất cả các câu trả lời khác có khả năng bị phá vỡ nếu Apple quyết định thay đổi cấu trúc chế độ xem.