如何访问从故事板加载的视图控制器的属性?

时间:2012-05-28 06:33:19

标签: iphone cocoa storyboard

我有一个使用instantiateViewControllerWithIdentifier创建的视图控制器实例,如下所示:

TBSCTestController* testController = [self.storyboard instantiateViewControllerWithIdentifier: @"OTP"];

TBSCTestController有一个名为IBOutlet的{​​{1}}属性,它与故事板中的标签相关联:

IBOutlet albel

我想使用此代码修改label的文本,但没有任何变化:

label

testController.label.text = @"newText"; [self.view addSubview: testController.view]; 是有效的实例,但testController是零。 我错过了什么?

1 个答案:

答案 0 :(得分:9)

您的UILabelnil,因为您已实例化您的控制器,但它未加载其视图。第一次请求访问其视图时,将加载控制器的视图层次结构。所以,正如@lnafziger建议的那样(虽然应该因为这个原因很重要)如果你切换两行它会起作用。所以:

[self.view addSubview: testController.view];  
testController.label.text = @"newText";

作为一个例子来说明这一点,即使这个也可行:

// Just an example. There is no need to do it like this...
UIView *aView = testController.view;
testController.label.text = @"newText";
[self.view addSubview: testController.view];  

或者这个:

[testController loadView];
testController.label.text = @"newText";
[self.view addSubview: testController.view];