2009-10-23 6 views
0

J'ai créé une UItableView en utilisant le modèle Xcode par défaut et le configurer pour afficher cinq lignes. Je sélectionne la première cellule de la table. Lorsque je sélectionne une autre cellule, je remarque que la première reste sélectionnée jusqu'à ce que je retire mon doigt du second.UITableView permet à deux cellules d'avoir le style sélectionné en même temps

échantillon

: http://img190.imageshack.us/img190/7184/cellsz.jpg

Je veux une cellule pour devenir sélectionnée sur le toucher pas supprimer tactile. J'ai cherché sur le net et dans la documentation d'apple mais je n'ai pas trouvé quelle méthode est appelée quand l'utilisateur touche l'écran pour la sélection.

Quelqu'un a-t-il des informations à ce sujet?

+0

Dupliquer: http://stackoverflow.com/questions/308081/is-it-possible-to-confugure-a-favorable-pour-allow-multiple-selection – rein

Répondre

2

Enfin, j'ai réussi à supprimer cet effet de double sélection.

Une cellule est sélectionnée lorsque le système détecte un événement interne de retouche. Avant qu'il ne soit sélectionné, la cellule possède un état de surbrillance qui apparaît au toucher.

Pour résoudre ce problème, je dois redéfinir la méthode - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated dans mon UITableViewCell personnalisé et ne rien faire dans cette méthode. Ainsi, la table n'aura jamais deux cellules de style sélectionnées en même temps.

citation après modification

Cette solution est enought pour moi, mais ne résout pas ma première demande à changement de sélection de cellule « touche à » événement au lieu d'événement « toucher out ».

bien ... Je suppose que c'est impossible. Si nous avions cette option, nous pourrions sélectionner une cellule quand nous voulions juste faire défiler dans une tableview.

1

Je ne connais pas la réponse à votre question, mais vous avez une offre. Vous pouvez marquer la ligne sélectionnée avec la coche dans votre

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

méthode déléguée. Et puis appelez [tableView deselectRowAtIndexPath:indexPath].

+0

bien ... Je n'étais pas clair enought. Je m'excuse. Dans mon cas, il y a toujours une cellule sélectionnée. le problème est que si une cellule est sélectionnée, le second aura le style sélectionné au toucher mais il ne sera pas sélectionné. J'ai déjà essayé cette méthode mais didSelectRowAtIndexPath est appelée lorsque vous retirez le doigt de la cellule, pas lorsque vous touchez la cellule et que vous la maintenez. J'ai ajouté une capture d'écran pour montrer à quoi cela ressemble. http://img190.imageshack.us/img190/7184/cellsz.jpg – HiroKenshin

+0

Je veux dire que si vous avez seulement à marquer la ligne sélectionnée, vous pouvez changer son accessoireType à, par exemple, UITableViewCellAccessoryTypeCheckmark et appeler deselectRow dans cette méthode déléguée. – Morion

0

Il n'existe aucune solution fournie par le cadre pour sélectionner plusieurs lignes. Morion a un bon moyen de le faire avec des coches. Vous pouvez également regarder this article par Matt Gallagher où son implémente ce que vous voulez.

+0

Je ne souhaite pas la sélection de plusieurs cellules. Je n'étais pas clair, je m'excuse. Je veux éviter que deux cellules aient le style sélectionné en même temps. cela donne à l'application un vrai mauvais look. regardez la capture d'écran que j'ai ajoutée dans mon post. – HiroKenshin

Questions connexes