คุณควรใช้วิธีนี้แทน:
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 ตัดสินใจเปลี่ยนโครงสร้างมุมมอง