CollectionView的数据源协议为集合视图的Cell提供了数据来源,其基本使用方法与TableView的数据源方法类似,但区别在于集合视图需要提前注册Cell。
1、注册Cell
在viewDidLoad方法中,对Cell进行预先注册,可以通过代码来创建Cell,也可以通过XIB来创建Cell,两种创建方式分别对应不同的注册方法。
-(void)registerClass:(nullableClass)cellClass forCellWithReuseIdentifier:(NSString*)identifier;
-(void)registerNib:(nullableUINib*)nib forCellWithReuseIdentifier:(NSString*)identifier;
示例:
staticNSString*cellID=@"MYCollectionCell";
[self.collectionView registerNib:[UINibnibWithNibName:@"MYCollectionCell"bundle:[NSBundlemainBundle]]forCellWithReuseIdentifier:cellID];
2、数据源方法实现
设置CollectionView的DataSource属性,指定数据源;
实现如下方法:
@protocolUICollectionViewDataSource
@required
-(NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section;
-(UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath;
@optional
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView;
@end
示例:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView
{
return2;
}
-(NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section{
return9;
}
-(UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{
MYCollectionCell*cell=[collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
cell.backgroundColor=[UIColoryellowColor];
returncell;
}