在View Controller Containment中保持对Parent的引用

时间:2014-10-10 19:23:17

标签: ios objective-c uiviewcontroller uikit

考虑一个基本的UIViewController,包含在UINavigationController或UITabBarController中。此视图控制器具有对其容器的引用,其中包含:

self.navigationController
self.tabBarController

现在考虑没有导航控制器或标签栏控制器的View Controller Containment的基本示例:

[self addChildViewController: child];
[[child view] setFrame: [[self view] bounds]];
[[self view] addSubview: [child view]];
[child didMoveToParentViewController: self];

如果我希望子视图控制器具有对容器的引用,那么这样做的最佳方法是什么?

我的猜测是我会在孩子身上做这样的事情:

@property (weak, nonatomic) MyContainerController *container;

并在我将孩子添加到父母的同时设置它,如下所示:

[child setContainer: self];

这是对的吗?

我想确保我可以从孩子那里引用容器,但我也担心内存问题。我相信强大的财产会阻止ARC释放孩子,即使我将其从容器中取出。这个假设是否正确?

2 个答案:

答案 0 :(得分:1)

您已经拥有self.parentViewController的引用。没有必要创建自己的。查看UIViewController类引用的“获取其他相关视图控制器”部分。

答案 1 :(得分:0)

更新SWIFT 3

在Swift中,名称已更改为self.parent,返回UIViewController可选。