[[NSBundle mainBundle] loadNibNamed:...]を使用してペン先からUITableViewCellをロードしています。今、私はいくつかのポスト初期化作業をプログラムで行う前に、私のコードでtableviewcellを使用するようにします。このコードは、initWithCoderメソッドではできないように見えます。クラスのラベルオブジェクトはまだnilなので(何も設定できないため)最初にtableviewcellのUILabelsが初期化されます(すべてIBOutletsとして定義されています)。ペン先から初期化されたUITableViewCellをプログラムで変更しますか?
3
A
答えて
5
UITableViewCell
をサブクラス化し、awakeFromNib
メソッドを入れてペン先から目を覚ましてから初期化を実行する必要があります。
コードを柔軟に保つには、この初期コードをmyInit
と呼ばれるルーチンに入れて、awakeFromNib
とそれを呼び出す必要のある場所から呼び出します。
私はいくつかの苦労の末、この状況に対して少し異なるアプローチを考え出しました。私はUITableViewCell
をサブクラス化し、このような初期化ルーチンがありますcontentView
は、セルの内容を含むIBOutlet
ある
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[[NSBundle mainBundle] loadNibNamed:@"MyUITableViewCell" owner:self options:nil];
[self addSubview:self.contentView];
}
return self;
}
を。これにより、残りのコードは他のセルと同じようにこのセルを呼び出すことができます。 ((MyUITableViewCell*)[tv dequeueReusableCellWithIdentifier:CellIdentifier];
の1つの厄介なキャストから離れて)