美文网首页技术分享-持续学习将来跳槽用
一个有关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