Удалите цвет выделения ячейки UITableView

110

Я хочу удалить синий цвет по умолчанию для выбора ячейки uitableview. Мне не нужен там какой-либо цвет выделения. Я не создавал собственный класс ячеек. Я настраиваю ячейку, добавляя над ней метки и кнопки. Я пробовал делать:

cell.selectioncolor = [UIColor clearcolor];

но он говорит, что этот метод устарел.

неха
источник

Ответы:

323
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
Кроме того, вы должны установить флажок « Ячейка представления таблицы », если вы измените «представление таблицы», чем вы не выбираете ячейки.
Kernelzero
2
@Pulkit это неправда. Это только отключит состояние выбора ячейки. Это не имеет ничего общего с отображаемыми в нем данными или обработкой его взаимодействия. Убедитесь, что вы правильно настроили регистрацию и не перекрывали другие функции.
Майкл
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Джои Вонг
источник
5
Или вы можете использовать значение перечисления напрямую cell.selectionStyle = .None
Стив
6

Цель-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

или

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Если вы хотите изменить его, просто используя Storyboard / Xib, просто выберите ячейку, из которой вы хотите удалить «Эффект стиля выделения», и определите ее как «Нет». Это тоже сработает как по волшебству: D

Раскадровка / Xib

Франтиско Масутти
источник
1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
военно-морской Хасан
5

Установка стиля выбора TableView на .noneвлияет на скорость отклика и производительность tableview в моем приложении ( didSelectRowAt indexPathнажатие задерживалось). Мое решение этой проблемы заключалось в том, чтобы скрыть выбранный фоновый вид awakeFromNib()при первом создании ячейки:

selectedBackgroundView?.isHidden = true

lynchspin
источник
4

Попробуйте это быстро

cell?.selectionStyle = UITableViewCellSelectionStyle.None
Джугал К Балара
источник
2

Сделайте это в камере :

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

    ...
}

Это так просто.

Fattie
источник
0

быстрый 5

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

        return cell
    }  
Zgpeace
источник
0

правильный ответ должен быть:

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

Тип выбора - это другое свойство, которое при установке на .noneпроизводит то, что вы хотите, ПЛЮС другие нежелательные побочные эффекты.

Если вы не хотите, чтобы ячейка выделялась , сделайте цвет ее фона таким же, как если бы она не была выделена.

Anr
источник