1

label.text を変更する ViewController の機能をテストしたいと考えています。最初に私はこれを試しました:

ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil];
[controller pressed];
NSLog(@"%@",controller.label.text);

押された機能は以下のとおりです。

-(void)pressed{
self.label.text = @"hello";
}

ただし、結果は NULL です。その後、次のようにコードを変更しました。

AppDelegate *delegate = [[UIApplicationsharedApplication] delegate];
ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil];
delegate.window.rootViewController = controller;
[controller pressed];
NSLog(@"%@",controller.label.text);

このコードだと思います

delegate.window.rootViewController = controller;

ラベルのテキストを変更できるようにコントローラのビューをロードできますが、その理由はわかりません。

4

1 に答える 1

2

あなたは正しいです。

ビューは、必要になるまで読み込まれません。ビュー コントローラーを作成するだけではビューの読み込みはトリガーされませんが、ウィンドウのルート ビュー コントローラーを割り当てるには、表示用にセットアップする必要があるため、すべての nib オブジェクトをインスタンス化してリンクします。

ビューへの参照も、次のようなものであってもロードされます。

ViewController* controller = [[ViewControlleralloc] initWithNibName:@"ViewController_iPhone"bundle:nil];
NSLog(@"%@", controller.view);
于 2012-06-04T12:38:48.400 に答える