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

Fen*_* Li 3 iphone cocoa storyboard

我有一个instantiateViewControllerWithIdentifier像这样创建的视图控制器实例:

TBSCTestController* testController = [self.storyboard instantiateViewControllerWithIdentifier: @"OTP"];
Run Code Online (Sandbox Code Playgroud)

TBSCTestController有一个IBOutlet名为的属性label,它与故事板中的标签相连:

IBOutlet albel

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

testController.label.text = @"newText";
[self.view addSubview: testController.view];  
Run Code Online (Sandbox Code Playgroud)

testController是一个有效的实例,但是label为零.我错过了什么?

All*_*ian 9

UILabelnil原因是你已经实例化了你的控制器但它没有加载它的视图.第一次请求访问其视图时,将加载控制器的视图层次结构.所以,作为@lnafziger建议(尽管它应该没关系这个确切原因)如果您切换两行会的工作.所以:

[self.view addSubview: testController.view];  
testController.label.text = @"newText";
Run Code Online (Sandbox Code Playgroud)

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

// 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];  
Run Code Online (Sandbox Code Playgroud)

或者这一个:

[testController loadView];
testController.label.text = @"newText";
[self.view addSubview: testController.view];  
Run Code Online (Sandbox Code Playgroud)