20

インターフェイス ビルダーを使用してタブ バー コントローラーをセットアップしました。各タブ バー アイテムはビュー コントローラー (4 つのタブ、4 つのビュー コントローラー) にリンクされています。-initどうやらこのメソッドが呼び出されないため、Interface Builder がメソッドを使用してビュー コントローラーを初期化するかどうかを知りたいです。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

...そして、いくつかの初期化を行いたいです。-viewDidLoadメモリ警告の場合にリコールされるため、追加できません。何か案が?

4

3 に答える 3

47

からロードされたオブジェクトは、次の*.(nib|xib)ように初期化されます。

- (id)initWithCoder:(NSCoder *)inCoder;

したがって、それをオーバーライドするか、-initWithCoder:が呼び出された後にセットアップを行うことが問題にならない場合は、次を使用できます。

- (void)awakeFromNib;

NSNibAwaking プロトコルから。

于 2009-01-29T16:20:40.150 に答える
10

initWithCodervsについても言及するつもりでしたawakeFromNib

initWithCoder一般に、オブジェクトまたは設定値にメモリを割り当てるときにオーバーライドします。IBOutlets が接続された後にセットアップを行う必要がある場合は、オーバーライドしますawakeFromNib。それまでは、IBOutlet インスタンス変数を他のビューやコントロールに接続することはできません。

于 2009-01-29T16:28:58.480 に答える
6

実装したいようですね-(void) awakeFromNib

NSNibAwakingプロトコルリファレンス(ADCログインが必要)

于 2009-01-29T16:12:47.140 に答える