关于xib创建的cell解决重用问题

有时候我们经常需要自定义的tableView的细胞,当细胞里面的布局较为复杂时往往舍弃纯代码的方式而改用XIB的方式进行自定义。当我们用纯代码的方式布局细胞时,往往会在细胞的initWithStyle:reuseIdentifier:方法里面用纯代码进行布局,然后在外部VC的cellForRowAtIndexPath方法里面我们会这么写,假定自定义的单元格为Cell,继承自UITableViewCell:

静态NSString *CellIdentifier=@“Cell”;Cell* cell =(Cell *)[tableViewdequeueReusableCellWithIdentifier:CellIdentifier];if(!cell){cell=[[[Cell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] autorelease];}cell.titleLabel.text=[self.dataList objectAtIndex:indexPath.row];返回单元格

/

但是上述很容易重用,至于怎么解决 我用了下面图片的方法就可以完美解决cell重用问题,但是这个方法只应用与少量cell重用问题,要是弄得多了,内存就有点吃紧了

还有一种就是,你在用xib创建之后先把里面的内容全部清空,比如textField.text = @"";label.text = nil;等等 这样也可以解决重用问题 

/另外一种防止重用方法更加严谨

NSString*cellID = [NSStringstringWithFormat:@"%zd",indexPath.row];

LMNewBabyAbnormalViewCell*nomalCell = [tableViewdequeueReusableCellWithIdentifier:cellID];

if(nomalCell ==nil) {

nomalCell = [[[NSBundlemainBundle]loadNibNamed:NSStringFromClass([LMNewBabyAbnormalViewCellclass])owner:niloptions:nil]lastObject];

[nomalCellsetValue:cellIDforKey:@"reuseIdentifier"];

}


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

推荐阅读更多精彩内容