2012-06-15 9 views
11

私は、そのプロトタイプのセルがストーリーボードに盛り込まれたUITableViewControllerサブクラスを持っています。dequeueReusableCellWithIdentifier:私のUITableViewCellサブクラスで初期化子を呼び出しますか?

セルを設定する代理メソッドcellForRowAtIndexPathにかなりの量のコードがあります。問題は、セルが最初にデキューされたときにすでに完了しているため、セルが再利用プールからデキューされている場合は、そのほとんどを必要としません。私はプログラムでしかアクセスできないプロパティがいくつかあるので、ストーリーボードではできません。

ストーリーボードからプロトタイプのセルを取り出すと、UITableViewControllerがUITableViewCellサブクラスの初期化子を呼び出しますか?私は(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifierを試しましたが、それはプロセスの一部ではないようです。

答えて

12

UITableViewインスタンスがdequeueReusableTileWithIdentifier:を呼び出すと、セルは再初期化されません。代わりに、その呼び出しでデキューされたUITableViewCellは-(void)prepareForReuseを呼び出します。これは、セルの再初期化にはコストがかかり、再利用のための準備方法をもっと簡単にすることができれば、CPUの作業を大幅に節約できます。

Ergo、カスタムセルを使用している場合は、UITableViewCell prepareForReuseをオーバーライドしてください。

10

私はおそらくフレーズ私の質問を正しくしなかったが、私はここで実際には(void)awakeFromNibを探していた。

セルがデキューされ、再利用されていないときに一度呼び出されます。ストーリーボードで行うのが理にかなっていないというプログラムでセットアップを行うことができます。

+1

(vodi)awakeFromNibは、UILabelにジェスチャ認識機能を追加するなど、一度だけ実行したいものに最適です。 –