iOS 开发 UICollectionView使用Xib自定义cell

时间:2024-03-23 20:50:09

平时直接在Storyboard中拖拽UICollectionView,然后画Cell。但是项目多个View都用到该Cell,于是将其提出来复用。

1、创建一个继承自UICollectionViewCell的类,暂且命名为ResourceCollectionViewCell,勾选Also create XIB file 来创建xib文件(当然,你也可以单独创建),这样就创建了三个文件


iOS 开发 UICollectionView使用Xib自定义cell

iOS 开发 UICollectionView使用Xib自定义cell

2、删除Xib中默认的View,拖一个Collection View Cell控件进去,然后在里面添加相应控件和约束。

3、设置Xib中CollectionViewCell的Class为“ResourceCollectionViewCell”,然后指定Identifier为“ResourceCollectionViewCell”(Identifier是为了Cell复用,可以自定义)
 

iOS 开发 UICollectionView使用Xib自定义cell

iOS 开发 UICollectionView使用Xib自定义cell

 

4、准备工作就绪,下面就开始使用了。使用前CollectionView需要先注册自定义的Cell,注册也有两个方法:

方法一:使用registerNib方法

[self.collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([ResourceCollectionViewCell class]):[NSBundle mainBundle]] forCellWithReuseIdentifier:@"ResourceCollectionViewCell"];
方法二:使用registerClass方法

[self.collectionView registerClass:[ResourceCollectionViewCell class] forCellWithReuseIdentifier:@"ResourceCollectionViewCell"];
但是需要重写ResourceCollectionViewCell的initWithFrame:方法,否则显示不了Cell的内容

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self = [[NSBundle mainBundle]loadNibNamed:@"ResourceCollectionViewCell" owner:self options:nil].lastObject;
    }
    return self;
}
5、在UICollectionViewDataSource代理方法

(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 中返回cell。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *[email protected]"ResourceCollectionViewCell";
    ResourceCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
    Resource *data=self.data.recommendation[indexPath.row];
    cell.data=data;
    return cell;
}

6、效果
--------------------- 

iOS 开发 UICollectionView使用Xib自定义cell


作者:cuisea 
来源:CSDN 
原文:https://blog.csdn.net/cuihaiyang/article/details/55057199 
版权声明:本文为博主原创文章,转载请附上博文链接!