我创建了一个带有三个UILabel和一个UIImageView的自定义UITableViewCell, 1:我创建了UITableViewCell的子类, 2:在xib文件中添加了三个标签和一个UIImageView 3:在cellForRowAtIndexpath
中使用以下方式创建单元格static NSString *CellIdentifier = @"NarrativeCell";
NarrativeCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil){
NSLog(@"New Cell Made");
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"NarrativeCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[NarrativeCell class]])
{
cell = (NarrativeCell *)currentObject;
break;
}
}
}
Narrative n=(Narrative*)[tableArray objectAtIndexPath:indexpath.row];
[cell.articleName setText:n.title];
NSData *data=[[NSData alloc]initWithContentsOfFile:n.file]
[cell.sideImageView setImage:[UIImage imageWithData:data]];
问题是这个,它总是创建新单元格,并且在添加少量图像后我得到内存警告和崩溃。 请帮助如何在上面的代码中重用单元格,以便它不应该使用太多的内存
答案 0 :(得分:0)
你的代码很好。您永远不会设置单元格的可重用标识符,因此不会重复使用它们(正如您所注意到的那样)。
在自定义单元类中,实现方法reuseIdentifier:
- (NSString *) reuseIdentifier {
return @"NarrativeCell";
}
或在界面构建器中设置标识符(在单元格的检查器中)。