Remova a cor de destaque da célula de UITableView

110

Quero remover a cor azul padrão da seleção de células do uitableview. Eu não quero nenhuma cor de seleção lá. Eu não criei uma classe de célula personalizada. Estou personalizando a célula adicionando rótulos e botões sobre ela. Eu tentei fazer:

cell.selectioncolor = [UIColor clearcolor];

mas diz que esse método está obsoleto.

neha
fonte

Respostas:

322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

em Swift 4 atualizado

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Ou

cell.selectionStyle = .none
Vladimir
fonte
3
Eu mantive esse código em cellForRowAtIndexPath :, esse é o lugar exato para guardar?
Pawriwes
9
@Pawriwes, sim. Se bem me lembro, você também pode definir essa propriedade no XIB da célula se você criar sua célula usando o Interface Builder
Vladimir
4
Se eu fizer isso, ao editar, ele não selecionará a célula :(
AsifHabib
54

Selecione isto em StoryboardouXIB


insira a descrição da imagem aqui

Michael
fonte
7
adicionalmente, você tem que marcar "Table View Cell " se mudar em "table view" e não selecionar células.
Kernelzero
2
@Pulkit isso não é verdade. Isso apenas desabilitará o estado de seleção da célula. Isso não tem nada a ver com os dados exibidos nele ou com sua interação. Certifique-se de que possui todos os registros adequados e não está substituindo outras funções.
Michael
isso está completamente errado
Fattie
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Joey Wong
fonte
5
Ou você pode usar o valor enum diretamente cell.selectionStyle = .None
Steve
11

Swift 3.0

cell.selectionStyle = .none
Rashwan L
fonte
6

Objective-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

ou

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Se você deseja alterá-lo apenas usando Storyboard / Xib, basta selecionar a Célula da qual deseja remover o "Efeito Estilo de Seleção" e defini-la como "Nenhum". Vai funcionar como mágica também: D

Storyboard / Xib

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

Definir o estilo de seleção TableView como .noneestava afetando a capacidade de resposta e o desempenho do tableview em meu aplicativo (os didSelectRowAt indexPathtoques estavam atrasados). Minha solução para este problema foi ocultar a visualização do plano de fundo selecionado awakeFromNib()quando a célula foi criada pela primeira vez:

selectedBackgroundView?.isHidden = true

lynchspin
fonte
4

Experimente isso rápido

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

Faça na célula :

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

    ...
}

É tão fácil.

Fattie
fonte
0

rápido 5

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

        return cell
    }  
Zgpeace
fonte
0

a resposta certa deve ser:

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

O tipo de seleção é uma propriedade diferente que, quando definida para, .noneproduz o que você deseja MAIS outros efeitos colaterais indesejados.

Se você não quer que a célula a ser destacado , em seguida, fazer a cor do seu ponto de vista de fundo a mesma de quando ele é não realçado.

anr
fonte