Tidak ada dari jawaban di atas yang benar-benar mengatasi masalah dengan benar. Alasannya adalah bahwa kami ingin menonaktifkan pemilihan sel tetapi tidak perlu subview di dalam sel.
Dalam kasus saya, saya sedang menghadirkan UISwitch di tengah baris dan saya ingin menonaktifkan pilihan untuk sisa baris (yang kosong) tetapi tidak untuk saklar! Cara yang tepat untuk melakukan itu karenanya dalam metode
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
di mana pernyataan formulir
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
menonaktifkan pemilihan untuk sel tertentu sementara pada saat yang sama memungkinkan pengguna untuk memanipulasi sakelar dan karenanya menggunakan pemilih yang sesuai. Ini tidak benar jika seseorang menonaktifkan interaksi pengguna melalui
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
metode yang hanya menyiapkan sel dan tidak memungkinkan interaksi dengan UISwitch.
Apalagi menggunakan metode
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
untuk membatalkan pilihan sel dengan pernyataan formulir
[tableView deselectRowAtIndexPath:indexPath animated:NO];
masih menunjukkan baris yang dipilih saat pengguna menekan konten asliMelihat sel.
Hanya dua sen saya. Saya cukup yakin banyak orang akan menemukan ini berguna.