美文网首页技术分享-持续学习将来跳槽用
一个有关tableViewCell的复用问题

一个有关tableViewCell的复用问题

作者: Sunxb | 来源:发表于2016-04-22 18:24 被阅读555次

    背景:

      tableview有两个分组,两个分组中的cell里面控件布局不同....

       手写代码布局cell...

    问题:

    手写代码的cell复用,上面添加的控件没有移除,会出现重叠.而且最开始用了一个复用ID,也就是默认了整个tableview是一类的cell.所以在页面中,尤其是复用了cell的时候,两种cell 会混乱..

    尝试办法一:(没起作用)

    把布局cell的子控件的代码写到if(!cell){}方法外面 ,也就是每次加载cell的时候,不管是否存在可以服用的cell,都重新加载cell内部的控件布局

    结果就是造成cell上的控件重复添加,比如文字字体越来越粗等..

    然后我就没继续尝试这个方法,估计在每次加载cell的时候先把cell(也就是cell的contentView的subViews)上面的控件清空应该可以奏效,但是遍历的话会卡顿..过意直接放弃

    尝试方法二:(解决了自己的问题)

    把cell分类,section = 0 或者section = 1;分别为cell设置不同的复用ID,

    这就表明了两个组的cell是不同类型的,不管是复用或者是新建,都根据自己的类型来加载,所以就解决了问题

    UITableViewCell * cell;

    switch (indexPath.section) {

    case 0:

    cell = [tableView dequeueReusableCellWithIdentifier:Identifier3];

    break;

    case 1:

    cell = [tableView dequeueReusableCellWithIdentifier:Identifier4];

    break;

    default:

    break;

    }

    基本就是这个意思了 ....

    相关文章

      网友评论

      • 来宝:大神,如果其中一个cell是我自定义的呢?
        Sunxb:@来宝 控件写了里面,赋值写了外面,不然还可能出问题
        来宝:@Sunxb 谢谢,我解决了,百度了网上很多办法都没解决,后来把cell里面所有的控件都写在if(cell==nil){里面}就解决了
        Sunxb:@来宝 你说的情况跟我的可能不一样,你可以具体描述一下吗

      本文标题:一个有关tableViewCell的复用问题

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