如何从nib定制UITableViewCell,可以重复使用

时间:2012-12-06 14:06:42

标签: iphone uitableview

我创建了一个带有三个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]];

问题是这个,它总是创建新单元格,并且在添加少量图像后我得到内存警告和崩溃。 请帮助如何在上面的代码中重用单元格,以便它不应该使用太多的内存

1 个答案:

答案 0 :(得分:0)

你的代码很好。您永远不会设置单元格的可重用标识符,因此不会重复使用它们(正如您所注意到的那样)。

在自定义单元类中,实现方法reuseIdentifier:

- (NSString *) reuseIdentifier {
    return @"NarrativeCell";
}

或在界面构建器中设置标识符(在单元格的检查器中)。