如何获取对子视图的 rootViewController 的引用?

Posted

技术标签:

【中文标题】如何获取对子视图的 rootViewController 的引用?【英文标题】:How do I get a reference to a rootViewController to a sub-view? 【发布时间】:2010-04-16 20:47:34 【问题描述】:

针对我之前的一个问题发布的答案引发了另一个问题;我正在从我的 rootViewController 调用一个新的视图控制器“RuleBuilder”。 rootViewController 持有对联系人数组的引用。如何在 RuleBuilder 中获得对该数组的引用?我尝试添加

UITableViewController *rootViewController;
...
@property (nonatomic, retain) UITableViewController *rootViewController;

到 RuleBuilder.h,然后

@synthesize rootViewController;

在 RuleBuilder.m 中。当我从 rootViewController 实例化并推送 RuleBuilder 时,我会这样做:

ruleBuilder.rootViewController = self;

但是当我尝试这个时

[rootViewController.contacts addObject:newContact];

在 RuleBuilder 中,我得到一个编译器错误,其结果是“在非结构的东西中请求‘联系人’”(或非常相似;我还没有实现这个确切的 sn-p 代码,但我尝试了不到一小时前的相同方法,用于我从未能够工作的几个不同的参考)。

再次感谢您的帮助。

【问题讨论】:

【参考方案1】:

您已将 rootViewController 属性声明为 UITableViewController(它没有“联系人”属性)。

很可能,您的根视图控制器是 UITableViewController 的子类。如果你调用了那个子类 RootViewController,那么 RuleBuilder 中的 rootViewController 属性应该被声明为

RootViewController *rootViewController

【讨论】:

就是这样。感谢您抓到。

以上是关于如何获取对子视图的 rootViewController 的引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取根视图控制器?

如何更改 rootViewController 的视图?

如何使用自动布局对子视图进行编程以占用其父视图宽度的 50% 但保持恒定高度?

如何将 UIViewController 作为子视图添加到 UIViewController(RootViewController)?

如何取消对子 UIControl 的触摸?

当 rootViewController 不是 UINavigationController 时推送视图