如何使用代码在ViewController中加载视图?

时间:2012-06-04 12:28:38

标签: uiview uiviewcontroller initialization

我想测试更改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;

可以加载控制器的视图,以便可以更改标签的文本。但我不知道为什么。

1 个答案:

答案 0 :(得分:2)

你是对的。

在需要之前不会加载视图。简单地创建视图控制器不会触发视图加载,但是分配窗口的根视图控制器需要将其设置为显示,因此实例化并链接所有nib对象。

对视图的任何引用也会导致它加载,甚​​至类似于:

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