Видаліть колір виділення комірки UITableView


110

Я хочу видалити синій колір за замовчуванням вибору комірки uitableview. Я не хочу, щоб там був колір виділення. Я не створив спеціальний клас комірок. Я налаштовую комірку, додаючи мітки та кнопки над нею. Я намагався робити:

cell.selectioncolor = [UIColor clearcolor];

але це говорить про те, що цей метод застарів.

Відповіді:


321
cell.selectionStyle = UITableViewCellSelectionStyleNone;

у Swift 4 оновлено

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Або

cell.selectionStyle = .none

3
Я зберігав цей код у cellForRowAtIndexPath:, це саме місце, яке потрібно зберегти?
Pawriwes

9
@Pawriwes, так. Якщо я правильно пам'ятаю, ви також можете встановити цю властивість у XIB клітинки, якщо ви створите свою клітинку за допомогою Interface Builder
Володимир

4
Якщо я це роблю, під час редагування клітинку не вибирають :(
AsifHabib

54

Виберіть це в StoryboardабоXIB


введіть тут опис зображення


7
додатковий, ви повинні перевірити «Table View Cell » , якщо змінити в «табличному» , чим ви не вибрали клітку.
Кернелзеро

2
@Pulkit, це неправда. Це лише відключить стан вибору комірки. Це не має нічого спільного з відображенням у ньому даних або обробкою їх взаємодією. Переконайтеся, що у вас все встановлено належним чином, і чи не переважають інші функції.
Майкл

це абсолютно неправильно
Fattie

12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None

5
Або ви можете використовувати значення enum безпосередньо cell.selectionStyle = .None
Стів


6

Завдання-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

або

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Швидкий 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Швидкий 3:

cell.selectionStyle = .none

Швидкий 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Якщо ви хочете змінити його просто за допомогою Storyboard / Xib, просто виберіть осередок, з якого ви бажаєте видалити "Ефект стилю вибору", і визначте його як "Немає". Так само буде працювати як магія: D

Розповідь / Xib


1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan

5

Встановлення стилю вибору TableView .noneвпливає на чуйність та ефективність перегляду таблиці в моєму додатку ( didSelectRowAt indexPathкрани затримувалися). Моє рішення цієї проблеми полягало в тому, щоб приховати вибраний фоновий вигляд awakeFromNib()під час першого створення клітини:

selectedBackgroundView?.isHidden = true



2

Зробіть це у комірці :

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

    ...
}

Це так просто.


0

стрімкий 5

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

        return cell
    }  

0

правильною відповіддю має бути:

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

Тип вибору - це інша властивість, яка встановлюється для отримання .noneтого, що ви хочете, PLUS інших небажаних побічних ефектів.

Якщо ви не хочете, щоб клітинка була виділена , тоді зробіть колір її фонового виду таким же, як і коли він не виділений.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.