美文网首页IOS首页投稿(暂停使用,暂停投稿)iOS Developer
UITableView加载自定义可重用cell的两种方法的区别(

UITableView加载自定义可重用cell的两种方法的区别(

作者: 赵奥勋 | 来源:发表于2016-05-19 13:21 被阅读971次

1.原始方法

假如UITableViewCell是我们自定义的cell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];

这个方法需要以下代码:

if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];
    }

2.iOS6以后出现的方法

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify forIndexPath:indexPath];

这个方法在cell为空时会自己创建cell,不需要以下代码:

if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];
    }

但是在创建tableView的时候需要告诉编译器按照什么样子创建cell,所以要给tableView注册自定义的cell,不注册就会崩溃:

[tableView registerClass:[自定义cell的类名 class] forCellReuseIdentifier:@"customCell"];

另外

UICollectionView加载自定义可重用的cell只有一种方法:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identify forIndexPath:indexPath];

类似UITableView的第二种方法,在创建UICollectionView的时候需要注册自定义的cell,不注册会崩溃。

相关文章

网友评论

  • dominghao:有个问题希望得到你的确认:UICollectionView加载自定义可重用的cell只有UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identify forIndexPath:indexPath];一种方法来获取重用的cell? 你这篇文章最后提到的. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];不可以用在自定义cell上面吗?如果这样,那iOS 6.0 之前还不能重用自定义了? 不知道我的理解有没有错误.
  • feng_dev:要是 indexpath 那里 的参数 写成别的样子 ,能重用不同 类型的 cell吗
    feng_dev:@赵奥勋 没明白
    赵奥勋:@枫子哥 先判断indexpath,再创建cell,indexpath那里不用变
  • feng_dev:要是故事板 里面呢? 注册 nib 还是 class ?求指导
    赵奥勋:@枫子哥 参考这个做http://www.2cto.com/kf/201206/134971.html
    feng_dev:@赵奥勋 我创建 自定义、cell 类的时候 ,不自带 xib ,而是在故事板里面 弄 ,nib 可以吗
    赵奥勋:@枫子哥 nib

本文标题:UITableView加载自定义可重用cell的两种方法的区别(

本文链接:https://www.haomeiwen.com/subject/uqhgrttx.html