BMACollectionBatchUpdates
BMACollectionBatchUpdates
is a set of classes to generate updates and extensions to UICollectionView
and UITableView
to perform them safely in a batch manner.
How to use
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
How to install
Using CocoaPods
-
Include the following line in your
Podfile
:pod 'BMACollectionBatchUpdates', '~> 1.1.0'
If you like to live on the bleeding edge, you can use the
master
branch with:pod 'BMACollectionBatchUpdates', :git => 'https://github.com/badoo/ios-collection-batch-updates'
-
Run
pod install
Manually
- Clone, add as a submodule or download.
- Add all the files under
BMACollectionBatchUpdates
to your project. - Make sure your project is configured to use ARC.
License
Source code is distributed under MIT license.
##Blog Read more on our tech blog or explore our other open source projects