Comment puis-je définir la propriété de cellule de UITableView pour qu'elle ne soit pas sélectionnable? Je ne veux pas voir cette boîte de sélection bleue lorsque l'utilisateur appuie sur la cellule.
iphone
cocoa-touch
Mugunth
la source
la source
tableView:shouldHighlightRowAtIndexPath:
comme indiqué par Ayush ciRéponses:
Définissez la
selectionStyle
propriété de la cellule du tableau surUITableViewCellSelectionStyleNone
. Cela devrait l'empêcher de se mettre en évidence, et vous pouvez également vérifier cette propriété dans votre fichiertableView:didSelectRowAtIndexPath:
.la source
Pour empêcher la sélection de lignes
Pour empêcher complètement la sélection du
UITableViewCell
, ayez votreUITableViewDelegate
outiltableView:willSelectRowAtIndexPath:
. À partir de cette méthode, vous pouvez revenirnil
si vous ne souhaitez pas que la ligne soit sélectionnée.Cela empêche la ligne d'être sélectionnée et
tableView:didSelectRowAtIndexPath:
d'être appelée. Notez cependant que cela n'empêche pas la ligne d'être mise en évidence.Pour empêcher la mise en évidence des lignes
Si vous souhaitez empêcher que la ligne ne soit mise en évidence visuellement au toucher, vous pouvez vous assurer que la cellule
selectionStyle
est définie surUITableViewCellSelectionStyleNone
, ou de préférence, vous pouvez avoir votreUITableViewDelegate
outiltableView:shouldHighlightRowAtIndexPath:
comme suit:la source
didSelectRowAtIndexPath
car ilwillSelectRowAtIndexPath
sera toujours appelé de toute façon.utilisez ceci:
la source
didSelectRowAtIndexPath
est toujours appelé.Pour iOS 6+ uniquement.
Vous pouvez implémenter la méthode
tableView:shouldHighlightRowAtIndexPath:
dans votre délégué. En savoir plus ici: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.htmlla source
Si ce problème avait également essayé tout ce qui a déjà été mentionné. La dernière astuce, qui a éliminé le "flash bleu" lors de la sélection d'une cellule de tableau, a été d'ajouter cette ligne:
Je ne sais pas si c'était cette seule ligne ou tout ce qui était combiné, mais comme résultat total, je n'obtiens plus de sélection bleue ni même le flash bleu. Heureux!
la source
Ensemble
cell.userInteractionEnabled = NO;
la source
utiliser IB est également une manière élégante:
la source
Apple dit que la première chose à faire dans didSelectRowAtIndexPath est de désélectionner la ligne
Ensuite, vous pouvez changer le AccessoryType pour être une coche, ou aucun, etc. Ainsi, lorsque vous entrez didSelectRowAtIndexPath, vous pouvez désélectionner la ligne, et si elle n'est pas censée être sélectionnée, ne vérifiez simplement pas cette ligne.
Guide de programmation de la vue tableau
la source
Une autre façon consiste à ajouter quelques méthodes de catégorie à
UITableViewCell
. J'aime mieux cela que la réponse de Sébastien (également bonne) parce que la façon dont je construis ma table. J'ai pensé que cela pourrait être utile à quelqu'un d'autre.la source
Swift 4:
vous pouvez empêcher la sélection et la mise en évidence en utilisant UITableViewDelegate: shouldHighlightRowAt
Cette réponse suppose que vous avez une cellule personnalisée créée nommée: CustomTableViewCell
et que vous avez créé un booléen à l'intérieur de cette cellule personnalisée nommée: isSelectable
Ceci est la version Swift de la réponse objc de Sebastian Celis.
la source
Si vous avez conçu votre cellule dans Interface Builder, vous pouvez le faire en supprimant la case à cocher « Interaction utilisateur activée » pour le
tableViewCell
.la source
Il existe un autre moyen simple d'éviter que la sélection n'apparaisse en bleu.
Sélectionnez une cellule que vous ne souhaitez pas voir apparaître en bleu.
Sélectionnez ensuite l'inspecteur d'attributs (l'icône de bouclier à côté de l'icône de règle dans la vue des propriétés sur le côté).
Puis changez le champ «Sélection» de «Bleu» à «Aucun».
Notez que cela est probablement toujours en cours de sélection, il n'apparaîtra tout simplement pas comme sélectionné si tout ce que vous voulez est d'éviter l'effet d'interface utilisateur.
la source
Utilisez tableView: willDisplayCell: forRowAtIndexPath: au lieu de tableView: didSelectRowAtIndexPath: pour éliminer le flash qui apparaît la première fois que vous touchez la cellule.
la source
Pour rendre certaines lignes non sélectionnées, vous devez apporter des modifications dans deux méthodes de délégué UITableView.
Dans la méthode ci-dessous
après allocation de la cellule, écrivez le code ci-dessous
Le code ci-dessus empêchera de mettre en surbrillance la cellule, si l'utilisateur essaie de sélectionner.
dans cette méthode déléguée ci-dessous
si vous n'écrivez pas, la
if(indexPath.row == someCellNumber) return;
ligne sera toujours sélectionnée et il y a un risque de plantage de l'applicationla source
Swift 4:
Dans la classe de cellule:
la source
Swift 5
la source