Hapus warna sorotan sel UITableView

110

Saya ingin menghapus warna biru default dari pemilihan sel uitableview. Saya tidak ingin ada warna pilihan di sana. Saya belum membuat kelas sel khusus. Saya menyesuaikan sel dengan menambahkan label dan tombol di atasnya. Saya mencoba melakukan:

cell.selectioncolor = [UIColor clearcolor];

tetapi dikatakan bahwa metode ini tidak digunakan lagi.

neha
sumber

Jawaban:

322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

di Swift 4 diperbarui

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Atau

cell.selectionStyle = .none
Vladimir
sumber
3
Saya menyimpan kode itu di cellForRowAtIndexPath :, apakah itu tempat yang tepat untuk menyimpannya?
Pawriwes
9
@Pawriwes, ya. Jika saya ingat dengan benar, Anda juga dapat mengatur properti itu di XIB sel jika Anda membuat sel menggunakan Interface Builder
Vladimir
4
Jika saya melakukannya, saat mengedit, itu tidak memilih sel :(
AsifHabib
54

Pilih ini di StoryboardatauXIB


masukkan deskripsi gambar di sini

Michael
sumber
7
Selain itu, Anda harus mencentang "Tabel Tampilan Sel " jika Anda mengubah "tampilan tabel" daripada Anda tidak memilih sel.
Kernelzero
2
@Pulkit itu tidak benar. Ini hanya akan menonaktifkan status pemilihan sel. Ini tidak ada hubungannya dengan data yang ditampilkan di dalamnya atau menangani interaksinya. Periksa untuk memastikan Anda memiliki semua set registrasi yang benar dan tidak menimpa fungsi lain.
Michael
ini sepenuhnya salah
Fattie
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Joey Wong
sumber
5
Atau Anda dapat menggunakan nilai enum secara langsung cell.selectionStyle = .None
Steve
11

Swift 3.0.0

cell.selectionStyle = .none
Rashwan L.
sumber
6

Objective-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

atau

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Cepat 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Cepat 3:

cell.selectionStyle = .none

Cepat 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Jika Anda ingin mengubahnya hanya dengan menggunakan Storyboard / Xib, cukup pilih Sel yang ingin Anda hapus "Efek Gaya Pilihan" dan tentukan sebagai "Tidak Ada". Ini akan bekerja seperti sulap juga: D

Papan Cerita / Xib

Frantiesco Masutti
sumber
1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan
5

Menyetel gaya Pilihan TableView .nonememengaruhi respons dan kinerja tampilan tabel di aplikasi saya ( didSelectRowAt indexPathkeran tertunda). Solusi saya untuk masalah ini adalah menyembunyikan tampilan latar belakang yang dipilih awakeFromNib()saat sel pertama kali dibuat:

selectedBackgroundView?.isHidden = true

lynchspin.dll
sumber
4

Coba ini dengan cepat

cell?.selectionStyle = UITableViewCellSelectionStyle.None
Jugal K Balara
sumber
2

Lakukan di dalam sel :

class YourCell:  UITableViewCell {
    
    override func didMoveToSuperview() {
        selectionStyle = .none
    }

    ...
}

Semudah itu.

Gendut
sumber
0

cepat 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        cell.selectionStyle = .none

        return cell
    }  
Zgpeace
sumber
0

jawaban yang benar seharusnya:

cell.selectedBackgroundView?.backgroundColor = <choose your color>

Jenis pilihan adalah properti yang berbeda ketika diatur ke .none menghasilkan apa yang Anda inginkan PLUS efek samping lain yang tidak diinginkan.

Jika Anda tidak ingin sel disorot , buat warna tampilan latar belakangnya sama seperti saat tidak disorot.

anr
sumber