Désactiver la sélection d'une seule UITableViewCell
Comment désactiver la sélection d'une seule cellule dans une UITableView? J'en ai plusieurs, et je veux seulement le dernier à être désactivé.
Vous devez vous connecter pour publier un commentaire.
tableView:didSelectRowAtIndexPath:
sera toujours appelé.cell.selectionStyle = .None
etcell.userInteractionEnabled = false
combinée permettra de couvrir la plupart des scénarios.À l'arrêt de certaines cellules d'être sélectionné utiliser:
Ainsi que la prévention de sélection, cela empêche également tableView:didSelectRowAtIndexPath: être appelé pour les cellules qui l'ont mis. Il fera aussi de voiceover à traiter de la même comme un bouton grisé (qui peut ou peut ne pas être ce que vous voulez).
Notez que si vous avez des éléments interactifs dans la cellule (ie. commutateurs/boutons), vous aurez besoin d'utiliser
cell.selectionStyle = UITableViewCellSelectionStyleNone;
au lieu de cela, puis assurez-vous d'ignorer les robinets sur la cellule danstableView:didSelectRowAtIndexPath:
.cell.accessoryView
, que j'ai défini pour unUIButton
que je veux être tappable.Jeter dans votre Tableau personnalisé VC:
Ensuite pour activer/désactiver la sélection pour someTableViewCell, faites ceci:
Vous avez terminé et peut expédier.
la dernière ligne de la table ne sera pas sélectionné
Comme je l'ai mentionné dans un autre thread toutes les méthodes ci-dessus ne sont pas de résoudre le problème, précisément. La façon correcte de la désactivation d'une cellule est par le biais de la méthode
et dans la méthode a utiliser
qui désactive la sélection de cellules, mais encore permet à l'utilisateur d'interagir avec les sous-vues de la cellule comme un UISwitch.
La solution la plus propre que j'ai trouvé à cette ne fait que l'utilisation de la méthode du délégué willDisplayCell.
Vous n'avez pas à prendre d'autres mesures en la méthode du délégué didSelectRowAtIndexPath à ce que le choix de cette cellule est ignoré. Tous les doigts sur cette cellule sera ignoré et le texte dans la cellule est grisée ainsi.
avec iOS 6.
Vous pouvez utiliser la méthode du délégué et de retour
NO
dans le cas où vous n'avez pas à être sélectionné etYES
dans le cas où vous voulez qu'il soit sélectionné.Essayer dans swift:
Si quelqu'un vous vous demandez comment réaliser cela dans swift, alors voici mon code. J'utilise Xcode 7 et testé à l'aide d'un iPad Retina(iOS 9).
Essayez de placer ces deux ligne de code si vous le souhaitez. Dans mon cas j'ai utilisé dans cette méthode pour l'affichage des cellules.
Rappelez-vous ce deux ligne de code va bloquer tout type de sélection ou de l'interaction à vos cellules, mais vous ne pouvez utiliser que la première ligne individuellement si vous le souhaitez. C'est...
Uniquement cette ligne permet de bloquer la sélection de vos cellules.
Toutefois, le deuxième ligne fera de la cellule "Lecture Seule". C'est..
Grâce
Espère que cela a aidé.