TestsTested | ✓ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Mar 2017 |
Maintained by Rafael Lopez Diez, Viacheslav Radchenko.
BMACollectionBatchUpdates
is a set of classes to generate updates and extensions to UICollectionView
and UITableView
to perform them safely in a batch manner.
In order to generate the mentioned updates it has to make collection item and section conform the BMAUpdatableCollectionItem
andBMAUpdatableCollectionItem
protocols respectively:
@interface BMAExampleItemsSection : NSObject <BMAUpdatableCollectionSection>
@end
@interface BMAExampleItem : NSObject <BMAUpdatableCollectionItem>
@end
Once both old and new data models are available, it has to calculate changes and apply them:
@implementation BMAExampleCollectionViewController
- (void)setSections:(NSArray *)sections {
[BMACollectionUpdate calculateUpdatesForOldModel:self.sections
newModel:sections
sectionsPriorityOrder:nil
eliminatesDuplicates:YES
completion:^(NSArray *sections, NSArray *updates) {
[self.collectionView bma_performBatchUpdates:updates applyChangesToModelBlock:^{
_sections = sections;
} reloadCellBlock:^(UICollectionViewCell *cell, NSIndexPath *indexPath) {
[self reloadCell:cell atIndexPath:indexPath];
} completionBlock:nil];
}];
}
@end
@implementation BMAExampleTableViewController
- (void)setSections:(NSArray *)sections {
[BMACollectionUpdate calculateUpdatesForOldModel:self.sections
newModel:sections
sectionsPriorityOrder:nil
eliminatesDuplicates:YES
completion:^(NSArray *sections, NSArray *updates) {
[self.collectionView bma_performBatchUpdates:updates applyChangesToModelBlock:^{
_sections = sections;
} reloadCellBlock:^(UITableViewCell *cell, NSIndexPath *indexPath) {
[self reloadCell:cell atIndexPath:indexPath];
} completionBlock:nil];
}];
}
@end
BMACollectionBatchUpdates
to your project.Source code is distributed under MIT license.
Read more on our tech blog or explore our other open source projects