1

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

我在主 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 编写代码,不用说我还是个菜鸟。我错过了什么?

谢谢!

4

1 回答 1

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;
    }
}
于 2013-05-24T19:57:37.970 回答