La sélection de tous les éléments dans UICollectionView iOS, même les cellules qui ne sont pas visibles
Je suis dans le milieu de la création d'une application où j'ai un bouton sur une barre d'outils qui sélectionne tous les éléments à l'intérieur d'une vue de collection.
Mais le problème que je suis confronté est, lorsque je tape sur le bouton, il sélectionne uniquement les éléments qui sont visibles sur l'écran. Cela est dû à la CELLULE de la RÉUTILISATION de fonctionnalités.
Est-il possible que je peux sélectionner toutes les cellules, même ceux qui ne sont pas actuellement visibles pour l'utilisateur?
Merci
J
- C'est possible, quel est le code que vous utilisez?
Vous devez vous connecter pour publier un commentaire.
Il n'est pas possible d'avoir toutes les cellules sélectionnées lors de l'utilisation de la cellule de réutilisation.
Due à la cellule de réutiliser le nombre de cellules qui existent à un moment donné est un couple de plus que le nombre de cellules actuellement visibles.
c'est à dire 6 cellules visible est d'environ 8 cellules existantes.
Vous êtes en mesure de trouver le nombre de cellules visibles il y a avec
La solution est d'avoir la
selected
valeur stockée à l'intérieur de la UICollectionView source de données et utiliser cette valeur pour lorsque vous personnalisez une cellule à l'intérieurcellForItemAtIndexPath
C'est possible, même avec la cellule de réutilisation. Vous pouvez sélectionner toutes les cellules dans la première section:
Si vous avez plus de 1 la section, il suffit d'utiliser un autre imbriquée boucle for pour parcourir toutes les sections.
J'ai eu du mal thro le même problème lorsque j'ai voulu afficher des photos et de permettre à l'utilisateur de sélectionner plusieurs photos, avec sélectionnez et désélectionnez-toutes les options.
Il s'est avéré que [auto.collectionView selectItemAtIndexPath:] ne fonctionne pas pour la sélection de toutes les cellules.
Je me suis donc retrouvé dans le maintien d'un état séparé drapeau avec la source de données. Dans mon cas, chaque cellule affiche une photo, j'ai donc dû maintenir séparé BOOL tableau, où chaque élément représente l'état de la sélection de la photo correspondante dans la source de données tableau.
Veuillez voir le code ci-dessous:
(Source: http://heliumapps.weebly.com/blog/uicollectionview-and-cell-selection)
Mis à jour pour Swift 3
mis à jour Gasper Kolenc réponse à swift 3 , pour une utilisation future si quelqu'un à la recherche de ce à swift 3, puis..
selectItem(atIndexPath: ...
maisselect(at indexPath: ...
à la place.Swift 3 solution:
J'ai créé une simple extension sur
UICollectionView
pour la sélection et la désélection: