2014-10-10 41 views
1

考虑UINavigationController或UITabBarController中包含的基本UIViewController。此视图控制器有其容器的引用,有两种:保留对视图控制器遏制中父对象的引用

self.navigationController 
self.tabBarController 

现在考虑视图控制器遏制的基本例子没有导航控制器或标签栏控制器:

[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释放孩子,即使我将它从容器中移出。这个假设是否正确?

回答

1

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

+0

当然。我多么愚蠢。谢谢您的帮助! – Axeva 2014-10-10 19:37:43

0

更新到SWIFT 3

在夫特,名称已变更为self.parent它返回一个UIViewController可选的。

相关问题