Lorsque j'essaie de décharger un lot d'images de ma vue de la collection et de le remplacer par un autre lot, je rencontre une erreur où, selon que le groupe d'images original ou subséquent était plus ou moins important que le remplacement prévu, une erreur d'assertion se produit et dit :
*** Assertion failure in -[UICollectionViewData validateLayoutInRect:],
/SourceCache/UIKit_Sim/UIKit-2891.1/UICollectionViewData.m:341
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'UICollectionView recieved layout attributes for a cell with an
index path that does not exist: <NSIndexPath: 0xb141c60> {length = 2, path = 0 - 2}
Dans ce cas, la liste d'images existante comptait 5 et la nouvelle liste d'images comptait 2. Ainsi, lorsqu'il est arrivé à la troisième image, l'exception s'est produite, indiquant que le CollectionViewDataDelegate de l'interface utilisateur n'était pas au courant de la modification du flux de données.
Avez-vous des suggestions sur la façon de vous assurer que les nouvelles images seront référencées par l'UICollectionView ? Bien sûr, j'ai appelé 'reloadData'
Merci.
1 votes
Il semble bien que l'objet accède à un vestige de données périmées, d'où la recherche d'une cellule dont l'index peut être hors de portée des données actuelles référencées dans la section. Dans mon cas, après de nombreuses expériences, le remède semble être de "[self.collectionView reloadSections:sections] ;". Après avoir fait cela, les exceptions ne sont plus signalées lorsque je fais glisser le collectionView vers la gauche ou la droite.
0 votes
J'ai un problème similaire. J'ai deux UICV qui affichent les mêmes données. Lorsque l'utilisateur modifie la date dans l'application, je demande de nouvelles données et appelle ensuite reloadData sur les deux CV. Cela fonctionnait très bien jusqu'à iOS6.1. Lorsque je lance les applications sur une version plus récente, j'obtiens l'erreur mentionnée ci-dessus. Le passage à reloadSections:sections la corrige mais ajoute un décalage et une animation indésirables (mise en page de flux personnalisée). Avez-vous fait des progrès dans ce domaine ?
0 votes
Je rencontre ce problème lorsque je renvoie des attributs de mise en page ayant un chemin d'index qui ne devrait pas exister en fonction du nombre de sections et du nombre d'éléments dans chaque section renvoyés par la source de données ! Il m'a fallu un certain temps pour comprendre ce problème. Si vous avez un modèle dynamique, assurez-vous que les chemins des sections/éléments s'alignent sur les chemins des attributs de mise en page.