Bagaimana Anda mendapatkan IndexPath.section dan IndexPath.row ketika tombol di sel diketuk? [duplikat]

Saya memiliki tampilan tabel yang dibagi menjadi beberapa bagian, saya harus mencetak jumlah baris dan bagian ketika saya mengetuk tombol di sel. Bagaimana saya bisa mendapatkan ini?


person ilbòem    schedule 28.09.2017    source sumber
comment
@vadian, Dari pertanyaan yang saya pahami adalah ini bukan tentang mendeteksi tombol di sel, ini tentang mendapatkan baris dan bagian dari sel itu. Anda dapat menggunakan penutupan itu di tautan yang disediakan vadian selain itu Anda dapat meneruskan jalur indeks sebagai parameter penutupan   -  person Ajay Singh Mehra    schedule 29.09.2017
comment
Pertanyaan tertaut menjelaskan cara untuk mendapatkan indexPath.section dan indexPath.row ketika tombol di sel diketuk.   -  person vadian    schedule 29.09.2017


Jawaban (2)


Simpan indexPath di dalam sel Anda dan ambil ketika tombol ditekan.

Pengontrol tampilan tabel

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

    return cell
}

Sel tabel khusus

class CustomTableCell: UITableViewCell {
    var indexPath: IndexPath!

    @IBAction func buttonPressed() {
        print(indexPath)
    }
}
person Tamás Sengel    schedule 28.09.2017
comment
Tidak perlu menyimpan jalur indeks ke dalam sel tampilan tabel khusus saat jalur indeks diteruskan ke metode delegasi tableView:didSelectCellAtIndexPath. - person tww0003; 28.09.2017
comment
Ingatlah bahwa OP ingin mengambil indexPath ketika tombol ditekan, bukan sel itu sendiri. - person Tamás Sengel; 28.09.2017
comment
Ah, saya salah membaca pertanyaannya. Masih tidak perlu membuat sel khusus. Saat tombol ditekan, ambil sel tampilan tabel dengan properti tampilan super dari tombol tersebut. Kemudian gunakan metode indexPathForCell tampilan tabel untuk mendapatkan jalur indeks. - person tww0003; 28.09.2017

Terapkan metode tableView:didSelectRowAtIndexPath:. Saat dipanggil, NSIndexPath akan diteruskan yang memiliki properti bagian dan baris di dalamnya.

Metode ini akan dipanggil setiap kali sel tampilan tabel ditekan. Jalur indeks akan menjadi jalur indeks sel yang ditekan.

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

Sunting:

Saya salah membaca pertanyaannya. Saat tombol ditekan, dapatkan TableViewCell dari tombol dengan mengakses superview tombol. Kemudian gunakan metode IndexPathForCell TableView untuk mendapatkan IndexPath tombol.

person tww0003    schedule 28.09.2017