layoutAtsortingbutesForSupplementaryViewOfKind: atIndexPath: passe dans un indexPath incorrect

J'ai un UICollectionViewLayout personnalisé qui utilise des vues supplémentaires pour placer un pied de page au bas de chaque page.

Cela semble avoir bien fonctionné jusqu'à ce que je commence à insert des cellules au bas d'une page.

Comme les vues supplémentaires doivent être liées à un NSIndexPath au sein de UICollectionView, dans ma méthode de layout préparée, je détecte la dernière cellule de la page et les attributes layoutAtsortingbutes de la vue supplémentaire sont stockés dans le dernier indexPath de la page.

C'est la disposition de la vue de collection avant d'insert une nouvelle cellule:

  |- Page 1 |-- [0, 0] |-- [0, 1] |-- [0, 2] |- Footer (indexPath [0, 2]) |- Page 2 |-- [1, 0] |-- [1, 1] |- Footer (indexPath [1, 1]) 

Comme prévu, ma méthode prepareLayout crée et stocke UICollectionViewLayoutAtsortingbutes pour indexPaths [0, 2] et [1, 1] .
layoutAtsortingbutesForSupplementaryViewOfKind:atIndexPath: méthode est également appelée deux fois en returnnant les attributes corrects pour indexPaths ( [0, 2] et [1, 1] )

Le problème est maintenant que lorsque j'insère une nouvelle cellule à l'index [1, 2] la méthode prepareLayout correctement les mises en page et modifie l'indexPath du second pied de page à [1, 2] comme prévu.

Cependant, lorsque layoutAtsortingbutesForSupplementaryViewOfKind:atIndexPath: est à nouveau appelé pour mettre à jour l'interface, sa propriété indexPath renvoie toujours [1, 1] . Cela returnne alors nil sur la méthode car il n'existe pas et provoque un crash (évidemment)!

Pourquoi layoutAtsortingbutesForSupplementaryViewOfKind:atIndexPath: returnne toujours l' layoutAtsortingbutesForSupplementaryViewOfKind:atIndexPath: incorrect (ancien)? J'ai vérifié que la layout est invalidée et que mon dictionary footerAtsortingbutes qui stocke le layoutAtsortingbutes a le bon (nouveau) indexPath, donc d'après ce que j'ai lu cela devrait fonctionner?

Il est également important de noter que cela ne se produit que lorsqu'une insertion animée a lieu … L'appel de reloadData ne reloadData pas.

En outre, je ne peux pas lier la vue supplémentaire à une seule section car ma layout personnalisée est conçue pour la page collectionView et les sections peuvent déborder sur différentes pages, ce qui signifie plusieurs vues supplémentaires pour chaque section.

Voici un aperçu du file .m de ma layout: https://gist.github.com/liamnichols/6621694

ou vous pouvez find le repo ici: https://github.com/liamnichols/LNCollectionViewPagedLayout/tree/master/Source

Ma solution alternative serait d'assigner les vues supplémentaires à un NSIndexPath personnalisé où la valeur d' indexPath.row déterminerait quelle page est la vue supplémentaire mais je ne suis pas sûr que ce soit un moyen approprié de gérer cela alors pensé que je requestrais conseil avant la main.

Toute aide est la bienvenue,

Merci.