web-dev-qa-db-fra.com

Comment rendre une cellule sur un UITableView non sélectionnable?

J'ai une cellule que j'insère en haut d'un UITableView. Comment puis-je m'assurer que lorsque l'utilisateur clique sur la cellule, elle n'affiche pas l'indicateur bleu sélectionné?

60
Sheehan Alam

Définissez style de sélection de UITableViewCell sur UITableViewCellSelectionStyleNone

Swift 5:

selectionStyle = .none
67
John Wang

Pour rendre une cellule complètement non sélectionnable par cellule, deux choses sont nécessaires:

1- Comme d'autres l'ont dit:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

2- Implémentez cette méthode déléguée comme suit:

// Called before the user changes the selection. Return a new indexPath, or nil, to change the proposed selection.
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    if(cell.selectionStyle == UITableViewCellSelectionStyleNone){
        return nil;
    }
    return indexPath;
}
59
malhal

Dans le Storyboard, définissez les éléments suivants pour la vue Table:

Sélection : Aucune sélection

Afficher la sélection au toucher : Faux

enter image description here

16
Eduardo Irias

tu peux faire

cell.selectionStyle = UITableViewCellSelectionStyleNone;
13
Anju

Syntaxe Swift:

cell.selectionStyle = UITableViewCellSelectionStyle.None
5
Dustin Williams

Je réponds du point de vue de la désactivation de TableViewCell. Vous pouvez utiliser le storyboard.

XCode Version 8.2.1 (8C1002)

Sélectionnez le TableVewCell sur le storyboard et ce qui suit sera visible sur le panneau de droite - Utilitaires.

Utilities Sidebar

Faites la sélection: aucune

C'est tout!

5
mythicalcoder
myTable.allowsSelection = false
3
Mitch Dalton

pour Swift 3 vous pouvez utiliser

 cell.isUserInteractionEnabled = false
3
user8043247

Mettre à jour dans Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none
2
Ben

Pour Swift 3:

cell.selectionStyle = .none
1
David Villegas

Implémentez cette méthode de UITableViewDelegate

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return NO;
}
1
Raymond