1. 程式人生 > >利用addChildViewController管理子檢視控制器

利用addChildViewController管理子檢視控制器

蘋果在iOS5中給UIViewController新增加的5方法以及一個屬性:

// 方法
addChildViewController:
removeFromParentViewController:
transitionFromViewController:toViewController:duration:options:animations:completion:
willMoveToParentViewController:
didMoveToParentViewController:
// 屬性
@property(nonatomic,readonly) NSArray *childViewControllers

在以前,一個UIViewController的View可能有很多小的子view。這些子view很多時候被蓋在最後,我們在最外層ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。這些子view大多數不會一直處於介面上,只是在某些情況下才會出現,例如登陸失敗的提示view,上傳附件成功的提示view,網路失敗的提示view等。但是雖然這些view很少出現,但是我們卻常常一直把它們放在記憶體中。另外,當收到記憶體警告時,我們只能自己手工把這些view從super view中去掉。

蘋果新的API增加了addChildViewController方法,並且希望我們在使用addSubview時,同時呼叫[self addChildViewController:child]方法將sub view對應的viewController也加到當前ViewController的管理中。對於那些當前暫時不需要顯示的subview,只通過addChildViewController把subViewController加進去。需要顯示時再呼叫transitionFromViewController:toViewController:duration:options:animations:completion方法。

另外,當收到系統的Memory Warning的時候,系統也會自動把當前沒有顯示的subview unload掉,以節省記憶體。

轉載自唐巧的部落格