这是一个快速而肮脏的问题: 我有一个“主”视图控制器(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编写代码,不用说我还是一个菜鸟。 我错过了什么?
谢谢!
答案 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;
}
}