0

我创建了一个自定义 UITableViewCell ,其中包含三个 UILabel 和一个 UIImageView ,1:我创建了 UITableViewCell 的子类,2:添加了三个标签和一个 UIImageView ,也在 xib 文件中 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]];

问题是这个,它总是创建新的单元格,我在添加几张图片后收到内存警告和崩溃。请帮助如何重用上述代码中的单元格,以免占用太多内存

4

1 回答 1

0

你的代码很好。您只是从未设置单元格的可重用标识符,因此它们不会被重用(正如您所注意到的)。

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

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

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

于 2012-12-06T14:22:00.830 回答