我在使用多个视图控制器进行编程时非常新。 我有一个RootViewController和一个FirstViewController。在RootViewController里面:
@property (nonatomic, retain) FirstController * firstController;
- (FirstController *)firstController {
if (!_firstController) {
UIStoryboard *storyboard = self.storyboard;
_firstController = [storyboard instantiateViewControllerWithIdentifier:@"First View"];
}
return _firstController;
}
所以,我设法看到我在故事板中设计的FirstViewController。
问题是这个。如果我尝试在RootViewController中运行此指令:
_firstController.myString = _myString;
myString显然是RootViewController中的属性名称,而FirstViewController内部属性相同。如果没有为_firstController分配内存,则运行此指令不起作用。但是,如果我分配内存并初始化_firstController,那么在Interface Builder中进行的每个调整都将消失。
我该如何解决?我确定我正在尝试做一些非常错误的事情。 提前谢谢。
答案 0 :(得分:1)
你写了getter - 所以使用它!
self.firstController.myString = _myString;
而不是
_firstController.myString = _myString;
您正在尝试直接访问实例,当然没有为其分配内存,因为您使用的是“延迟加载”技术(ivar将在需要时分配。)使用self.firstController
您只需发送消息[self firstController],它将为第一个控制器分配内存。