dequeueReusableCellWithReuseIdentifier 走的是对应的cell什么创建方法

一、dequeueReusableCellWithReuseIdentifier 走的是对应的cell什么创建方法?
初步猜测是跟注册方式有关
如果有关UINib * hotCityNib=[UINibnibWithNibName:@"HotCityCell"bundle:nil];
[self.collectionViewregisterNib:hotCityNib forCellWithReuseIdentifier:COLLECT_CELL_ID];
那么对应的是是cell的awakefromXib的创建方法

如果有关[collection registerClass:[UICollectionCell class]forCellWithReuseIdentifier:cellIdentifier];
那么对应的是cell的initwithframe的创建方法

二、UICollectionView使用的cell重用机制
1.首先服从<UICollectionViewDataSource>协议,如果自定义cell,导入自定义cell类的头文件
2.定义全局变量重用标识符
static NSString *cellIdentifier = @“重用”;
3.注册cell(collection,为UICollectionView对象)
[collection registerClass:[UICollectionCell class] forCellWithReuseIdentifier:cellIdentifier];
4.创建cell

  • (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    //使用自定义cell,用自定义cell类将UICollectionCell替换即可
    UICollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
    return cell;
    }
    而tableviewcell 出了上面之外 有单独的创建方法
    (3).判断是否成功取到可重用的cell,如果没有创建一个cell
    if (!cell) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier: identifier] ;
    } return cell;}

三.两种cell复用的方法区别:
假设我们已经创建了一个collectionView,下面的1和2到底有什么区别呢

define COLLECT_CELL_ID @"collectionCellId"

1.[self.collectionView dequeueReusableCellWithReuseIdentifier:COLLECT_CELL_ID];
2.[self.collectionView dequeueReusableCellWithReuseIdentifier:COLLECT_HOTCITY_CELL_ID forIndexPath:indexPath];
对于这两个方法,看了苹果的官方文档,给出的答案是这样的(以XIB创建的cell为例)
对于第二种方式,必须用注册的方法来实现,即实现
UINib * hotCityNib=[UINibnibWithNibName:@"HotCityCell"bundle:nil];
[self.collectionViewregisterNib:hotCityNib forCellWithReuseIdentifier:COLLECT_CELL_ID];
否则会导致程序崩溃。
对于第一种方式,则使用普通方法和注册方法都可以。
但是到了这里,肯定还是有人会问,到底根本上的区别在哪里呢,经过多方查阅以及自己进行实验,终于发现了,原来使用第二种方法在出列cell之前会再次调用 sizeForItemAtIndexPath (tableView中为 heightForRowAtIndexPath)方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容