Saya telah membuat kebiasaan UITableViewCell
. Tampilan tabel menunjukkan data baik-baik saja. Apa yang saya terjebak adalah ketika pengguna menyentuh sel tampilan tabel, maka saya ingin menunjukkan warna latar belakang sel selain nilai [warna biru] default untuk menyorot pemilihan sel. Saya menggunakan kode ini tetapi tidak ada yang terjadi:
cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];
Tidak perlu sel khusus. Jika Anda hanya ingin mengubah warna sel yang dipilih, Anda dapat melakukan ini:
Tujuan-C:
Cepat:
sumber
Warna latar pemilihan sel Table View dapat diatur melalui Storyboard di Interface Builder:
sumber
Jika Anda memiliki tabel yang dikelompokkan dengan hanya satu sel per bagian, cukup tambahkan baris tambahan ini ke kode:
bgColorView.layer.cornerRadius = 10;
Jangan lupa untuk mengimpor QuartzCore.
sumber
Swift 3: bagi saya itu berhasil ketika Anda memasukkannya ke dalam
cellForRowAtIndexPath:
metodesumber
awakeFromNib()
metode (dalam kasus sel khusus).Berikut ini berfungsi untuk saya di iOS 8.
Saya harus mengatur gaya pemilihan agar
UITableViewCellSelectionStyleDefault
warna latar belakang kustom berfungsi. Jika ada gaya lain, warna latar belakang khusus akan diabaikan. Tampaknya ada perubahan perilaku karena jawaban sebelumnya perlu mengatur gaya untuk tidak ada.Kode lengkap untuk sel sebagai berikut:
sumber
Buat sel kustom untuk sel tabel Anda dan di kelas sel kustom. Letakkan kode di bawah ini, itu akan berfungsi dengan baik. Anda perlu menempatkan gambar warna yang diinginkan di
selectionBackground
UIImage.sumber
Ekstensi Swift 3.0
cell.selectionColor = UIColor.FormaCar.blue
sumber
@IBInspectable
var jika Anda mau.@IBDesignable
tidak berguna untuk ini.Kita perlu mengatur tampilan latar belakang yang dipilih dalam metode ini.
sumber
Jika Anda ingin menambahkan warna yang disorot khusus ke sel Anda (dan sel Anda berisi tombol, label, gambar, dll.) Saya mengikuti langkah-langkah berikut:
Misalnya jika Anda ingin warna kuning yang dipilih:
1) Buat tampilan yang sesuai dengan semua sel dengan opacity 20% (dengan warna kuning) disebut misalnya backgroundselectedView
2) Di pengontrol sel tulis ini:
sumber
Di Swift 4, Anda juga dapat mengatur warna latar belakang sel tabel Anda secara global (diambil dari sini ):
sumber
Jika Anda menggunakan TableViewCell khusus, Anda juga dapat mengganti
awakeFromNib
:sumber
Satu lagi tip untuk cara Christian untuk menunjukkan latar belakang sudut bundar untuk tabel grup.
Jika saya gunakan
cornerRadius = 10
untuk sel, ini menunjukkan latar belakang pilihan bulat empat sudut. Ini tidak sama dengan UI default tampilan tabel.Jadi, saya memikirkan cara mudah untuk menyelesaikannya dengan cornerRadius . Seperti yang dapat Anda lihat dari kode di bawah ini, periksa tentang lokasi sel (atas, bawah, tengah atau topbottom) dan tambahkan satu lagi sub lapisan untuk menyembunyikan sudut atas atau sudut bawah. Ini hanya menunjukkan tampilan yang persis sama dengan latar belakang pemilihan tampilan tabel default.
Saya menguji kode ini dengan iPad
splitterview
. Anda dapat mengubah posisi bingkai patchLayer sesuai kebutuhan.Tolong beri tahu saya jika ada cara yang lebih mudah untuk mencapai hasil yang sama.
sumber
Saya ingin mencatat bahwa editor XIB menawarkan kepada Anda opsi standar berikut:
Bagian: biru / abu-abu / tidak ada
(kolom kanan dengan opsi, tab ke-4, grup pertama "Table View Cell", subkelompok ke-4, item pertama dari 3 berbunyi "Pilihan")
Mungkin apa yang ingin Anda lakukan dapat dicapai dengan memilih opsi standar yang tepat.
sumber
Sesuai warna khusus untuk sel yang dipilih
UITableView
, solusi hebat sesuai jawaban Maciej SwicSebagai tambahan, Anda mendeklarasikan jawaban Swic dalam konfigurasi Cell yang biasanya di bawah:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Dan untuk efek tambahan, alih-alih warna sistem, Anda dapat menggunakan nilai RGB untuk tampilan warna kustom. Dalam kode saya ini adalah bagaimana saya mencapainya:
Beri tahu saya jika itu juga berlaku untuk Anda. Anda dapat mengacaukan dengan
cornerRadius
nomor untuk efek di sudut sel yang dipilih.sumber
Saya punya pendekatan yang sedikit berbeda dari orang lain yang mencerminkan pemilihan pada sentuhan daripada setelah dipilih. Saya memiliki UITableViewCell subkelas. Yang harus Anda lakukan adalah mengatur warna latar belakang pada acara sentuh, yang mensimulasikan pemilihan saat disentuh, dan kemudian mengatur warna latar belakang pada fungsi setSelected. Mengatur warna latar belakang dalam fungsi selSelected memungkinkan untuk membatalkan pilihan sel. Pastikan untuk meneruskan acara sentuh ke super, jika tidak sel tidak akan bertindak seolah-olah yang dipilih.
sumber
Untuk menambahkan latar belakang untuk semua sel (menggunakan jawaban Maciej):
sumber
Untuk override
UITableViewCell
'ssetSelected
juga bekerja.sumber
bagi mereka yang hanya ingin menyingkirkan latar belakang abu-abu yang dipilih, letakkan baris kode ini di func cellForRowAtIndexPath Anda:
sumber
untuk Swift 3.0:
sumber
Saya menggunakan pendekatan di bawah ini dan berfungsi dengan baik untuk saya,
sumber
Swift 4+:
Tambahkan baris berikut di sel tabel Anda
Akhirnya harus seperti di bawah ini
sumber
Berikut adalah bagian penting dari kode yang diperlukan untuk tabel yang dikelompokkan. Ketika salah satu sel dalam suatu bagian dipilih, baris pertama berubah warna. Tanpa awalnya mengatur gaya selsel untuk tidak ada ada memuat ulang ganda annonying ketika pengguna mengklik row0 di mana sel berubah menjadi bgColorView lalu memudar dan memuat ulang bgColorView lagi. Semoga Sukses dan beri tahu saya jika ada cara yang lebih sederhana untuk melakukan ini.
sumber
Dalam hal kelas sel khusus. Timpa saja:
sumber
Sangat mudah ketika gaya tampilan tabel sederhana, tetapi dalam gaya grup, ini sedikit masalah, saya menyelesaikannya dengan:
mencatat kGroupTableViewCellWidth, saya mendefinisikannya sebagai 300, itu adalah lebar sel tampilan tabel grup di iPhone
sumber
Pastikan Anda telah menggunakan baris di atas untuk menggunakan efek seleksi
sumber
sumber
Saya menggunakan iOS 9.3 dan pengaturan warna melalui Storyboard atau pengaturan
cell.selectionStyle
tidak bekerja untuk saya, tetapi kode di bawah ini berfungsi:Saya menemukan solusi ini di sini .
sumber
Coba ikuti kode.
// Versi Swift:
sumber
Swift 4.x
Untuk Mengubah warna latar belakang pilihan ke anyColour gunakan Swift Extension
Buat ekstensi UITableView Cell seperti di bawah ini
Kemudian panggil removeCellSelectionColour () dengan instance sel.
sumber