私のプロジェクトでは、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:] を使用して変更のアニメーションを実行する必要がありますか、それともより良い方法がありますか?
コレクションビューのサブクラス化にはあまり興味がなかったので、助けていただければ幸いです...
ありがとう、ビル。