Удалите цвет выделения ячейки 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



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производит то, что вы хотите, ПЛЮС другие нежелательные побочные эффекты.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.