6

UIViewController サブクラスのデフォルトの initWithNibName 指定イニシャライザを次のようにオーバーライドしてみました。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

その定義もヘッダー ファイルに含めました。ただし、アプリケーション デリゲート nib がビュー コントローラーをロードすると、イニシャライザーは呼び出されず、-viewDidLoad のみが呼び出されます。

nib マジックはどのようにビュー コントローラをインスタンス化しますか? すべての XCode テンプレートが状態を示すのはなぜですか

// 指定された初期化子。コントローラをプログラムで作成し、viewDidLoad に適していないカスタマイズを実行する場合はオーバーライドします。

ビューコントローラーが別のペン先からロードされたときに initWithNibName が呼び出されないのは正しいですか?

4

1 に答える 1

17

awakeFromNibNibからロードされたときに実行されるようにするには、初期化コードをメソッド内に配置する必要があります。Nibファイルには、含まれているオブジェクトのアーカイブバージョンが含まれているため、原則として、オブジェクトを再度初期化する必要はありません。

于 2009-10-15T07:58:10.680 に答える