我有一个创建的视图控制器实例instantiateViewControllerWithIdentifier
像这样:
TBSCTestController* testController = [self.storyboard instantiateViewControllerWithIdentifier: @"OTP"];
TBSCTestController
has an IBOutlet
属性名为label
它与情节提要中的标签挂钩:
![IBOutlet albel](https://i.stack.imgur.com/ml9Ye.png)
我想修改文本label
使用此代码但没有任何改变:
testController.label.text = @"newText";
[self.view addSubview: testController.view];
The testController
是一个有效的实例,但是label
为零。
我错过了什么?
Your UILabel
is nil
因为您已经实例化了控制器,但它没有加载其视图。控制器的视图层次结构在您第一次请求访问其视图时加载。所以,正如 @lnafziger 所建议的(尽管它should由于这个确切的原因很重要)如果你切换两条线它就会工作。所以:
[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];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)