关于ios:无法访问parentviewcontroller的属性

Can't access parentviewcontroller's properties

下面是一个快速而肮脏的问题:我有一个"主"视图控制器(VC),它是从父VC打开的,使用导航控制器。然后我有一个从"主"VC打开的"子"VC(模式段)。

我在主VC接口中设置了一个属性:

1
@property (nonatomic) int myVar;

然后通过触摸按钮的操作进行设置,从"主"VC界面显示"子"VC:

1
self.myVar=1;

我把mainvc.h导入了subsc.h

然后,在subsc的viewdidload方法中,我试图访问myvar的值,但不能用以下方法进行访问:

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

返回值为0。

当我尝试PresentingView控制器方法时,我得到一个错误(当我按下segue而不是使其成为模式时,这不会导致错误:

[MainVC myVar]: unrecognized selector sent to instance

我正在尝试为ios 5编写代码,不用说我仍然是个笨蛋。我错过了什么?

谢谢!


"子"视图控制器的parentViewController不是mainVC,而是导航控制器。mainVC是不可访问的——据你所知,它可能被释放以节省内存。

如果需要将数据从主控制器传递到SEgue上的子控制器,请将实例变量添加到"Sub"视图控制器,并在PrepareForSegue方法中进行设置:

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