0

カスタムセルオブジェクトを保存して後で表示しようとしています。しかし、私が持っているメカニズムを完全に理解できません:

- (id)initWithCoder:(NSCoder *)decoder {
    if((self = [super init])) {
        self.action = [decoder decodeObjectForKey:@"action"];
    }
    return self;
}

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

    }
    return self;
}

このようにして、変数をデコードしますが、テーブルセルはまったく表示されません。コーダーでinitを削除すると、テーブルセルインターフェイスが表示されますが、変数をデコードできません。これを機能させるにはどうすればよいですか?

4

1 に答える 1

0

私はあなたの問題を見ることができると思います。それでも、セル自体を保存するべきではありません。すべてのコンテンツを収集する 1 つのオブジェクトを受け入れる UITableViewCell-Subclass を作成するだけです。これに複数のクラスが必要な場合は、それも問題ありません。複数のユースケース用に複数のサブクラスを簡単に作成できます。次に、データオブジェクトを保存し、再び必要になったときにセルを再作成します。この理由は、セルを構成するすべての UIviews、Lables などを保存しようとしているため、あなたの方法が大きなオーバーヘッドを生み出すことです。また、UITableViews は高度に最適化されており、既存のセルを再利用しようとしますが、これはあなたのアプローチではうまく機能しません。

TL;DR: keyedArchivers に保存できる dataobjects が必要で、これらのオブジェクトを受け入れて必要なデータを表示する tableviewcells が必要です。真剣に、あなたはいくつかのトラブルを避けることができます. 助けが必要な場合はお知らせください。楽しんでください

于 2013-05-15T13:16:09.483 に答える