无法访问parentviewcontroller的属性

时间:2013-05-24 19:51:42

标签: ios objective-c properties uiviewcontroller

这是一个快速而肮脏的问题: 我有一个“主”视图控制器(VC),它从父VC开放,使用导航控制器。然后我有一个“主”VC从“主”VC打开(模态segue)。

我在主VC的界面中设置了一个属性:

@property (nonatomic) int myVar;

然后从触摸的按钮动作设置它,以显示“主”VC界面中的“子”VC:

self.myVar=1;

我在subVC.h中导入了mainVC.h

然后在subVC的viewDidLoad方法中,我试图访问myVar的值,但不能用:

NSLog(@"Myvar is %i", ((mainVC*)self.parentViewController).myVar);

将值返回为0。

当我尝试呈现ViewController方法时,我得到一个错误(当我按下segue而不是将其作为模态时,这不会导致错误:

  

[MainVC myVar]:无法识别的选择器发送到实例

我正在尝试为iOS 5编写代码,不用说我还是一个菜鸟。 我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

“子”视图控制器的parentViewController mainVC,它是导航控制器。 mainVC无法访问 - 据您所知,它可能会被释放以节省内存。

如果需要将数据从主控制器传递到segue上的子控制器,请将实例变量添加到“子”视图控制器,并在prepareForSegue方法中设置它:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"open_sub"]) {
        subVC *sub = segue.destinationViewController;
        sub.myVar = 1;
    }
}