这是一个快速而肮脏的问题: 我有一个“主” View Controller (VC),它是从使用导航 Controller 的父 VC 打开的。然后我有一个从“主”VC 打开(模式转场)的“子”VC。
我在主 VC 的界面中设置了一个属性:
@property (nonatomic) int myVar;
然后将其设置为从“主”VC 的界面显示“子”VC 的触摸按钮 Action :
self.myVar=1;
我在subVC.h中引入了mainVC.h
然后在 subVC 的 viewDidLoad 方法中,我试图访问 myVar 的值,但不能这样做:
NSLog(@"Myvar is %i", ((mainVC*)self.parentViewController).myVar);
返回值为 0。
当我尝试使用 presentingViewController 方法时,我得到了一个错误(当我推送 segue 而不是将其设置为模态时,这并没有导致错误:
[MainVC myVar]: unrecognized selector sent to instance
我正在尝试为 iOS 5 编写代码,不用说我仍然是个菜鸟。 我错过了什么?
谢谢!
最佳答案
“子” View Controller 的 parentViewController
不是 mainVC
,它是导航 Controller 。 mainVC
不可访问 - 如您所知,它可能会被释放以节省内存。
如果需要在segue上将数据从主 Controller 传递给子 Controller ,在“子” View Controller 中添加一个实例变量,并在prepareForSegue方法中设置:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"open_sub"]) {
subVC *sub = segue.destinationViewController;
sub.myVar = 1;
}
}
关于ios - 无法访问 parentviewcontroller 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742635/