2

私はこのコードを見ました:

CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 25.0f)];
[coolButton awakeFromNib];
// ...
[coolButton release];

CoolButtonサブクラスUIButton。プログラムで呼び出すことはawakeFromNibできますか?

-[CoolButton awakeFromNib]nibファイルからではなく、プログラムでオブジェクトを作成したいときに行ったのと同じことをしたい場合、これを行う最善の方法は何ですか?

-[CoolButton awakeFromNib]メソッドを定義してandで呼び出すだけ-[CoolButton initWithFrame]ですか? または、両方の場合に呼び出される定義する必要がある別の初期化メソッドがありますか:CoolButtonプログラムで作成するか、nib ファイルから作成するか?

4

2 に答える 2

6

いいえ、コードで作成されたオブジェクトと NIB から作成されたオブジェクトの両方に対して呼び出されるメソッドはありません。共通の初期化ロジックを含む別のメソッドを作成し、 と の両方から呼び出す必要がawakeFromNibありinitWithFrame:ます。

于 2011-06-22T21:10:47.450 に答える
2

WellawakeFromNibは、XIB と NIB の間のすべての接続が設定されるたびに呼び出されます。awakeFromNibオブジェクトがnibファイルから初期化されるときに呼び出されると思います。したがって、NIB ファイルを使用せずにプログラムで作成する場合は、 を呼び出す必要はありませんawakeFromNibinitWithFrame一方、 を呼び出すのはよい方法のように思えます。この関数では、nib ファイルを必要とせずに、プログラムでビューを作成できます。私は間違っている可能性がありますinitWithFrameが、ビューがペン先で作成されているかどうかに関係なく呼び出されると思います。

于 2011-06-22T21:10:30.910 に答える