多个控制器的通信和空间分配

时间:2014-02-28 14:33:57

标签: ios uiviewcontroller storyboard

我在使用多个视图控制器进行编程时非常新。 我有一个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中进行的每个调整都将消失。

我该如何解决?我确定我正在尝试做一些非常错误的事情。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你写了getter - 所以使用它!

self.firstController.myString = _myString;

而不是

_firstController.myString = _myString;

您正在尝试直接访问实例,当然没有为其分配内存,因为您使用的是“延迟加载”技术(ivar将在需要时分配。)使用self.firstController您只需发送消息[self firstController],它将为第一个控制器分配内存。