ios - 无法访问 parentviewcontroller 的属性

标签 ios objective-c properties uiviewcontroller

这是一个快速而肮脏的问题: 我有一个“主” 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/

相关文章:

c - "Save 38% now"C 字符串中止程序

iphone - UIView 忽略方向或粘到底部的容器

ios - 如何确定 iCloud 文件夹中是否存在文件?

python - 理解 Python 属性的工作

c# - Visual Studio 设计时属性 - 表单列表下拉列表

javascript - parseInt 复制 JavaScript 中的对象属性

ios - 核心数据值快速访问错误

ios - Swift(一些)UITableViewDelegate 方法不执行

iphone - 如何在 iPhone 应用程序中每天在特定时间调用方法?

ios - 应用程序在后台时的自定义状态栏