คุณจะได้รับ indexPath.section และ indexPath.row ได้อย่างไรเมื่อแตะปุ่มในเซลล์ [ทำซ้ำ]

ฉันมีการแบ่งมุมมองตารางเป็นส่วนๆ ฉันต้องพิมพ์จำนวนแถวและส่วนเมื่อฉันแตะปุ่มในเซลล์ ฉันจะได้รับสิ่งนี้ได้อย่างไร?


person ilbòem    schedule 28.09.2017    source แหล่งที่มา
comment
@vadian จากคำถามที่ฉันเข้าใจก็คือมันไม่เกี่ยวกับการตรวจจับปุ่มในเซลล์ แต่เกี่ยวกับการรับแถวและส่วนจากเซลล์นั้น คุณสามารถใช้การปิดนั้นในลิงก์ vadian ที่ให้ไว้นอกจากนี้คุณสามารถส่งผ่าน indexpath เป็นพารามิเตอร์ได้ ของการปิด   -  person Ajay Singh Mehra    schedule 29.09.2017
comment
คำถามที่เชื่อมโยงอธิบายวิธีในการรับindexPath.sectionและindexPath.rowเมื่อมีการแตะปุ่มในเซลล์   -  person vadian    schedule 29.09.2017


คำตอบ (2)


เก็บ indexPath ไว้ในเซลล์ของคุณและดึงกลับมาเมื่อกดปุ่ม

ตัวควบคุมมุมมองตาราง

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "custom") as! CustomTableCell
    cell.indexPath = indexPath

    return cell
}

เซลล์ตารางแบบกำหนดเอง

class CustomTableCell: UITableViewCell {
    var indexPath: IndexPath!

    @IBAction func buttonPressed() {
        print(indexPath)
    }
}
person Tamás Sengel    schedule 28.09.2017
comment
ไม่จำเป็นต้องจัดเก็บเส้นทางดัชนีลงในเซลล์ tableview ที่กำหนดเองเมื่อเส้นทางดัชนีถูกส่งผ่านไปยังเมธอดผู้รับมอบสิทธิ์ tableView:didSelectCellAtIndexPath - person tww0003; 28.09.2017
comment
โปรดทราบว่า OP ต้องการดึง indexPath เมื่อมีการกด ปุ่ม ไม่ใช่ที่เซลล์ - person Tamás Sengel; 28.09.2017
comment
เอ่อ ฉันอ่านคำถามผิด ยังคงไม่จำเป็นต้องสร้างเซลล์แบบกำหนดเอง เมื่อกดปุ่ม ให้จับเซลล์ tableview ด้วยคุณสมบัติ super view ของปุ่ม จากนั้นใช้วิธี indexPathForCell ของ tableview เพื่อรับเส้นทางดัชนี - person tww0003; 28.09.2017

ใช้เมธอด tableView:didSelectRowAtIndexPath: เมื่อมันถูกเรียก NSIndexPath จะถูกส่งผ่านที่มีคุณสมบัติส่วนและแถวอยู่

เมธอดนี้จะถูกเรียกทุกครั้งที่กดเซลล์ tableview เส้นทางดัชนีจะเป็นเส้นทางดัชนีของเซลล์ที่ถูกกด

https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614877-tableview

แก้ไข:

ฉันอ่านคำถามผิด เมื่อกดปุ่ม ให้รับ TableViewCell จากปุ่มโดยเข้าไปที่การควบคุมดูแลของปุ่ม จากนั้นใช้วิธีindexPathForCellของ TableView เพื่อรับindexPathของปุ่ม

person tww0003    schedule 28.09.2017