0

3 つの UILabel と 1 つの UIImageView を持つカスタム UITableViewCell を作成しました。1: UITableViewCell のサブクラスを作成しました。2: xib ファイルにも 3 つのラベルと 1 つの UIImageView を追加しました。

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";
}

または、Interface Builder(セルのインスペクター)で識別子を設定します。

于 2012-12-06T14:22:00.830 に答える