Saya mengalami masalah dengan UITableView's
didSelectRowAtIndexPath
.
Meja saya sudah diatur sehingga ketika saya memilih baris itu menginisialisasi pengontrol tampilan baru dan mendorongnya.
Pertama kali saya mengetuk baris apa pun di tabel, metode ini tidak dipanggil. Setelah saya memilih baris lain, itu mulai berfungsi seperti biasa.
Saya telah memverifikasi ini dengan menetapkan breakpoint pada didSelectRowAtIndexPath
. Ketika menambahkan NSLog
metode saya melihat bahwa ketika saya memilih baris kedua yang akhirnya mendorong controller tampilan baru, saya melihat dua pernyataan log muncul di konsol pada saat yang sama.
Ada saran?
uitableview
cocoa-touch
uikit
didselectrowatindexpath
Mark Adams
sumber
sumber
tableView:didSelectRowAtIndexPath:
?Jawaban:
Kesempatan apa pun yang Anda ketik tidak sengaja lakukan De selectRowAtIndexPath?
sumber
Periksa juga properti pemilihan tampilan tabel Anda dalam file xib. Gunakan 'Seleksi Tunggal' atau 'Seleksi Berganda' sebagaimana diperlukan.
sumber
Saya mengalami masalah berikut:
Dalam kasus saya, kesalahan saya sedang memeriksa
Show Selection on Touch
di Interface Builder. Anda dapat menghapus centang di IB di sini:Semoga itu bisa membantu seseorang
sumber
Periksa Jika Anda telah menetapkan pengenal gerakan di kelas Anda. Menghilangkan gestur berhasil untuk saya.
sumber
Saya berdebat bahkan memposting jawaban ini karena saya pikir bintang-bintang agak selaras untuk mewujudkannya.
Saya mengalami variasi masalah ini dan telah memeriksa solusi lain. Pada tampilan meja saya itu tidak memproses baris terakhir dari meja saya pada ketukan pertama. Itu menyoroti itu, tetapi
didSelectRowAtIndexPath
tidak dipanggil. Semua baris lainnya berfungsi dengan baik. Tetapi jika saya mengaktifkan bouncing tableview maka sepertinya akan menyelesaikan masalah (tapi kemudian Anda harus berurusan dengan bouncing tableview).sumber
UITableViewCellSelectionStyleNone ditetapkan untuk sel yang menampilkan masalah itu (ios9).
Saya akhirnya menelepon
hal pertama di
yang tidak sama, tetapi cukup baik. membuat saya bertanya-tanya seperti apa kerusakan meja yang dibawa ios10.
sumber
setSelected
tetapi saat pengguna memegang sel, muncul pilihan yang tidak dapat diterimaSWIFT 2
Pastikan Anda memiliki set ini menjadi true:
self.tableView.allowsSelection = true
Letakkan ini di atas kanan Anda setelah Anda
viewDidLoad()
dan sebelumsuper.viewDidLoad()
sumber
SWIFT 3
Jika Anda bekerja dengan Swift 3 di kelas yang bukan
UITableViewController
dan Anda gunakanUITableViewDelegate
, maka Anda mungkin perlu menggunakan judul metode:Ini bekerja untuk saya, walaupun saya baru saja memigrasikan proyek saya ke Swift 3. Ini cukup baru sehingga ini mungkin diperbaiki nanti.
sumber
Jika Anda telah menetapkan UITapGestureRecognizer di kelas Anda, Anda dapat menambahkan baris ini di didSelectRowAtIndexPath Anda:
Ini berhasil untuk saya.
sumber
masalah ini terjadi juga ketika Anda bekerja dengan pengenal isyarat dalam tableView dalam hal ini Anda tidak perlu menghapusnya, Anda hanya perlu memastikan bahwa properti isyarat Anda
cancelsTouchesInView = false
ini adalah nilai boolean yang memengaruhi apakah sentuhan dikirim ke tampilan saat suatu gerakan dikenali.sumber
SWIFT 3
Tidak ada jawaban lain yang berhasil dalam kasus saya, yang memperbaikinya bagi saya adalah:
tableView.delaysContentTouches = false
sumber
didSelectRowAt
fungsi tidak dipanggil dalam aplikasi saya di ketukan pertama atau kedua ... Saya sedang mencoba menyelesaikan masalah tidak dapat menemukan solusi. Tapi tiba-tiba saya dikenali, saya menggunakan view.animation change color ...Delegate
metode tidak dipanggil saat animasi tetap adasumber
Dalam kasus saya, saya memiliki header bagian UITableView dengan pengenal isyarat. Ketika header diketuk, itu harus memasukkan beberapa baris ke bagian itu dan menghidupkan animasi (seperti memperluas / menutup bagian). Pertama kali ketika diperluas dan disadap, metode delegasi didSelectRow tidak dipecat. Untuk mengetuk lebih lanjut dan memperluas / menutup tindakan, itu berfungsi seperti yang diharapkan.
Per jawaban oleh @Ayoub Nouri Saya mengatur cancelsTouchesInView ke false, dan ini menyelesaikan masalah. tapGestureRecognizer? .cancelsTouchesInView = false
sumber
Cepat 4.2
Menonaktifkan "Delay Touch Down" di inspektur atribut menyelesaikan masalah.
Setelah itu kliknya lancar dan didSelectRowAt langsung menyala.
sumber
Apa yang berhasil bagi saya adalah mulai mengetik "didSelect ..." dan kemudian biarkan koreksi otomatis mengisi sisanya. Rupanya beberapa detail sintaksis saya miring. Seperti yang orang lain katakan, Gunakan IDE !!
sumber