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.

Respostas:


322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

em Swift 4 atualizado

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Ou

cell.selectionStyle = .none

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


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

5
Ou você pode usar o valor enum diretamente cell.selectionStyle = .None
Steve


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


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


4

Experimente isso rápido

cell?.selectionStyle = UITableViewCellSelectionStyle.None

2

Faça na célula :

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

    ...
}

É tão fácil.


0

rápido 5

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

        return cell
    }  

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.