美文网首页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