私はuitableviewcellサブクラスを介してカスタムセルを持つテーブルビューを持っています。セルは、結果が受信された後に変化するラベルlblResultを有する。それはうまくいきますが、私がテーブルビューをスクロールダウンすると、他のランダムセルに同じ結果ラベルが表示されます(しかし、それらのラベルはまだ適切な "名前"ラベルを持っています)。xcode/cocoa:カスタムセルの識別子を再利用する
これは再利用識別子と関係があると思いますが、わかりません。
私の問題を理解するためのコードが必要な場合はお知らせください。
セルが返される前に
static NSString *CellIdentifier = @"tableCell";
FriendCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[FriendCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:nil];
}
次にcellForRowAtIndexPathでこのように作られて、セルがloadingQueue辞書に渡されます。 loadingQueue辞書から細胞をロードし、以下が呼び出されresultComplete方法がある結果ロード:
[[cell lblNumTagged] setText:[NSString stringWithFormat:@"(%d)",[thisDictionary count]]];
[[cell lblNumTagged] setHidden:NO];
.....最後の行の末尾に注意し、このようにそれを試してみてください。しかし、今は下にスクロールすると新しいものがクリアされますが、元に戻すと元のものもクリアされますが、その結果がそこにとどまることを望みます。 – JoshDG
カスタム図面を作成する場合は、セルを返す前に[cell setNeedsDisplay]を呼び出して描画を強制的に更新する必要があります。 – Lefteris
私はそれを試みた。しかし、元のセルはまだリセットされています。表示が開かれる→cellForRowAtIndexPathがビュー内のセルに対して呼び出され、下にスクロールすると、cellForRowAtIndexPathが再度呼び出され、新しいセルがフォーマットされますが、以前に作成されたセルが次のように使用されます。 1000個のオブジェクトを作成しない - >スクロールアップすると、cellForRowAtIndexPathが再度呼び出され、以前編集したセルがリセットされます。解決策として、データソースに「state」関数を実装して、cellForRowAtIndexPathに描画する必要があるものを伝える必要がありますか? – JoshDG