Supprimer la couleur de surbrillance de la cellule de UITableView

110

Je souhaite supprimer la couleur bleue par défaut de la sélection de cellules uitableview. Je ne veux pas de couleur de sélection là-bas. Je n'ai pas créé de classe de cellule personnalisée. Je personnalise la cellule en ajoutant des étiquettes et des boutons dessus. J'ai essayé de faire:

cell.selectioncolor = [UIColor clearcolor];

mais il dit que cette méthode est obsolète.

neha
la source

Réponses:

322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

dans Swift 4 mis à jour

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Ou

cell.selectionStyle = .none
Vladimir
la source
3
J'ai gardé ce code dans cellForRowAtIndexPath:, est-ce l'endroit exact à conserver?
Pawriwes
9
@Pawriwes, oui. Si je me souviens bien, vous pouvez également définir cette propriété dans le XIB de la cellule si vous créez votre cellule à l'aide d'Interface Builder
Vladimir
4
Si je le fais, lors de l'édition, il ne sélectionne pas la cellule :(
AsifHabib
54

Sélectionnez ceci dans StoryboardouXIB


entrez la description de l'image ici

Michael
la source
7
de plus, vous devez cocher " Cellule vue tableau " si vous changez en "vue tableau" que vous ne sélectionnez pas de cellules.
Kernelzero
2
@Pulkit ce n'est pas vrai. Cela désactivera uniquement l'état de sélection de la cellule. Cela n'a rien à voir avec les données qui y sont affichées ou avec la gestion de leur interaction. Assurez-vous que tous les enregistrements sont correctement définis et que vous n'écrasez pas les autres fonctions.
Michael
c'est complètement faux
Fattie
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Joey Wong
la source
5
Ou vous pouvez utiliser la valeur d'énumération directement cell.selectionStyle = .None
Steve
11

Swift 3.0

cell.selectionStyle = .none
Rashwan L
la source
6

Objectif 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

Si vous souhaitez le modifier simplement en utilisant Storyboard / Xib, sélectionnez simplement la cellule dont vous souhaitez supprimer l '"effet de style de sélection" et définissez-la comme "Aucun". Cela fonctionnera également comme par magie: D

Storyboard / Xib

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

La définition du style de sélection TableView .noneaffectait la réactivité et les performances de la vue table dans mon application (les didSelectRowAt indexPathtaps étaient retardés). Ma solution à ce problème était de masquer la vue d'arrière-plan sélectionnée awakeFromNib()lors de la création de la cellule:

selectedBackgroundView?.isHidden = true

lynchspin
la source
4

Essayez ceci pour rapide

cell?.selectionStyle = UITableViewCellSelectionStyle.None
Jugal K Balara
la source
2

Faites-le dans la cellule :

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

    ...
}

C'est si facile.

Fattie
la source
0

rapide 5

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

        return cell
    }  
Zgpeace
la source
0

la bonne réponse devrait être:

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

Le type de sélection est une propriété différente qui, lorsqu'elle est définie sur .none produit ce que vous voulez PLUS d'autres effets secondaires indésirables.

Si vous ne souhaitez pas que la cellule soit mise en surbrillance , définissez la couleur de sa vue d'arrière-plan comme lorsqu'elle n'est pas mise en surbrillance.

anr
la source