有时候我们经常需要自定义的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"];
}