さまざまなカスタム UITableViewCells (およびセル識別子) を持つ UITableView を持つアプリケーションがあります。
実装されたtableView:cellForRowAtIndexPath:
メソッドでは、UITableView のdequeueReusableCellWithIdentifier:
メソッドを使用し、ユーザーがテーブルをスクロールしているときに呼び出されると、期待されるタイプの UITableViewCell を提供しますが、コードの他の部分で再利用可能なセルを取得しようとすると、nil が得られます。そのため、新しいセルをインスタンス化する必要があります。
たとえば、表示する新しいオブジェクトを挿入するコードは次のようになります。
...
[myDataSource addObject:newObject];
...
[self.tv beginUpdates];
[self.tv insertRowsAtIndexPaths:paths withRowAnimation:rowAnimation];
[self.tv endUpdates];
...
画面を離れたばかりのセルは、挿入しているのと同じタイプ (同じセル識別子) でしたが、tableView:cellForRowAtIndexPath:
それはその呼び出しで and をトリガーし、 nil を返します。dequeueReusableCellWithIdentifier:
再利用可能なセルを提供するべきではありませんか?私の場合、私のセルはその複雑さのためにやや「重い」init メソッドを持っているため、これは問題になる可能性があります。
前もって感謝します
Edit1:明確にするために、(挿入しているのと同じタイプの) 一部のセルが表示されなくなったため、テーブルキャッシュに未使用のセルインスタンスが返されない理由を知りたいですか?