私のプロジェクトでは、UICollectionViewを使用してアイコンのグリッドを表示しています。
ユーザーは、異なるNSSortDescriptorを使用してコアデータからフェッチを呼び出すセグメント化されたコントロールをクリックすることで、順序を変更できます。
データの量は常に同じで、最終的には異なるセクション/行になります。
- (IBAction)sortSegmentedControlChanged:(id)sender {
_fetchedResultsController = nil;
_fetchedResultsController = [self newFetchResultsControllerForSort];
NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
[self.collectionView reloadData];
}
問題は、reloadDataが変更をアニメーション化せず、UICollectionViewが新しいデータをポップするだけであるということです。
セルが変更の前後にあったindexPathを追跡し、[self.collectionView moveItemAtIndexPath:toIndexPath:]を使用して変更のアニメーションを実行する必要がありますか、それともより良い方法がありますか?
私はcollectionViewsのサブクラス化にあまり興味がなかったので、どんな助けも素晴らしいでしょう...
ありがとう、ビル。
reloadData
呼び出しをアニメーションブロックでラップしてみましたか?