2014-10-10 43 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可選的。

相關問題