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.

Réponses:


322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

dans Swift 4 mis à jour

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Ou

cell.selectionStyle = .none

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


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

5
Ou vous pouvez utiliser la valeur d'énumération directement cell.selectionStyle = .None
Steve


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


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


4

Essayez ceci pour rapide

cell?.selectionStyle = UITableViewCellSelectionStyle.None

2

Faites-le dans la cellule :

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

    ...
}

C'est si facile.


0

rapide 5

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

        return cell
    }  

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.