iOS Effectuer des mises à jour par lots


Exemple

Vous pouvez animer des modifications complexes dans votre vue de collection à l'aide de la méthode performBatchUpdates . A l'intérieur du bloc de mise à jour, vous pouvez spécifier plusieurs modifications pour les animer en une seule fois.

collecitonView.performBatchUpdates({
    // Perform updates
}, nil)

Dans le bloc de mise à jour, vous pouvez effectuer des insertions, des suppressions, des déplacements et des rechargements. Voici comment déterminer quel indexPath utiliser:

Type NSIndexPath
Insertion Index dans un nouveau tableau
Effacement Index dans l'ancien tableau
Bouge toi de: ancien tableau, à: nouveau tableau
Recharger soit nouveau ou ancien tableau (cela ne devrait pas avoir d'importance)

Vous ne devez appeler que le rechargement sur les cellules qui n'ont pas été déplacées, mais leur contenu a changé. Il est important de noter qu'un déplacement ne rafraîchit pas le contenu d'une cellule, mais déplace uniquement son emplacement.

Pour vérifier que votre mise à jour par lots sera effectuée correctement, assurez-vous que l'ensemble d'indexPaths pour la deletion , le move-from et le reload est unique et que l'ensemble d'indexPaths pour l' insertion , le move-to et le reload est unique.

Voici un exemple de mise à jour de lot correcte:

let from = [1, 2, 3, 4, 5]
let to = [1, 3, 6, 4, 5]

collecitonView.performBatchUpdates({
    collectionView.insertItemsAtIndexPaths([NSIndexPath(forItem: 2, inSection: 0)])
    collectionView.deleteItemsAtIndexPaths([NSIndexPath(forItem: 1, inSection: 0)])
    collectionView.moveItemAtIndexPath(NSIndexPath(forItem: 2, inSection: 0), 
                                       toIndexPath: NSIndexPath(forItem: 1, inSection:0))
}, nil)