14
14
@implementation SomoDataSourceProvider
15
15
{
16
16
NSString * _reuseIdentifier;
17
+ SomoCollectionViewNumberOfSectionBlock _sectionsBlock;
18
+ SomoCollectionViewNumberOfRowInsSections _rowsBlock;
17
19
SomoTableViewCellBlock _tableViewCellBlock;
18
20
SomoTableViewCellHeightBlock _heightBlock;
19
21
SomoCollectionViewCellBlock _collectionViewCellBlock;
@@ -47,6 +49,8 @@ - (instancetype)initWithTableViewCellBlock:(SomoTableViewCellBlock)block heightB
47
49
}
48
50
49
51
- (instancetype )initWithCollectionViewCellBlock : (SomoCollectionViewCellBlock)block
52
+ sections : (SomoCollectionViewNumberOfSectionBlock)sections
53
+ rows : (SomoCollectionViewNumberOfRowInsSections)rows
50
54
size : (SomoCollectionViewLayoutSize)size
51
55
edgeInsets : (SomoCollectionViewLayoutEdgeInsets)edgeInsets
52
56
minimumLineSpacing : (SomoCollectionViewLayoutMinimumLineSpacing)minimumLineSpacing
@@ -55,6 +59,8 @@ - (instancetype)initWithCollectionViewCellBlock:(SomoCollectionViewCellBlock)blo
55
59
referenceSizeForFooter : (SomoCollectionViewLayoutReferenceSizeForFooter)referenceSizeForFooter {
56
60
if (self = [super init ]) {
57
61
_collectionViewCellBlock = block;
62
+ _sectionsBlock = sections;
63
+ _rowsBlock = rows;
58
64
_numberOfRowsInSection = 30 ;
59
65
_sizeBlock = size;
60
66
_insetsBlock = edgeInsets;
@@ -92,8 +98,12 @@ - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)ce
92
98
93
99
#pragma mark - collection
94
100
101
+ - (NSInteger )numberOfSectionsInCollectionView : (UICollectionView *)collectionView {
102
+ return _sectionsBlock (collectionView);
103
+ }
104
+
95
105
- (NSInteger )collectionView : (UICollectionView *)collectionView numberOfItemsInSection : (NSInteger )section {
96
- return self. numberOfRowsInSection ;
106
+ return _rowsBlock (collectionView,section) ;
97
107
}
98
108
99
109
- (__kindof UICollectionViewCell *)collectionView : (UICollectionView *)collectionView cellForItemAtIndexPath : (NSIndexPath *)indexPath {
@@ -109,27 +119,27 @@ - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICol
109
119
}
110
120
111
121
- (CGSize )collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath : (NSIndexPath *)indexPath {
112
- return _sizeBlock (collectionView,collectionViewLayout,indexPath);
122
+ return _sizeBlock ? _sizeBlock (collectionView,collectionViewLayout,indexPath) : CGSizeZero ;
113
123
}
114
124
115
125
- (UIEdgeInsets)collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex : (NSInteger )section {
116
- return _insetsBlock (collectionView,collectionViewLayout,section);
126
+ return _insetsBlock ? _insetsBlock (collectionView,collectionViewLayout,section) : UIEdgeInsetsZero ;
117
127
}
118
128
119
129
- (CGFloat )collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex : (NSInteger )section {
120
- return _minimumLineSpacingBlock (collectionView,collectionViewLayout,section);
130
+ return _minimumLineSpacingBlock ? _minimumLineSpacingBlock (collectionView,collectionViewLayout,section) : 0 . f ;
121
131
}
122
132
123
133
- (CGFloat )collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex : (NSInteger )section {
124
- return _minimumInteritemSpacingBlock (collectionView,collectionViewLayout,section);
134
+ return _minimumInteritemSpacingBlock ? _minimumInteritemSpacingBlock (collectionView,collectionViewLayout,section) : 0 . f ;
125
135
}
126
136
127
137
- (CGSize )collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection : (NSInteger )section {
128
- return _referenceSizeForHeaderBlock (collectionView,collectionViewLayout,section);
138
+ return _referenceSizeForHeaderBlock ? _referenceSizeForHeaderBlock (collectionView,collectionViewLayout,section) : CGSizeZero ;
129
139
}
130
140
131
141
- (CGSize )collectionView : (UICollectionView *)collectionView layout : (UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection : (NSInteger )section {
132
- return _referenceSizeForFooterBlock (collectionView,collectionViewLayout,section);
142
+ return _referenceSizeForFooterBlock ? _referenceSizeForFooterBlock (collectionView,collectionViewLayout,section) : CGSizeZero ;
133
143
}
134
144
135
145
@end
0 commit comments