在iOS5中,ViewController中新添加了下面幾個方法:
addChildViewController:是UIViewController的一個方法,iOS5之後加入的,使用這個方法可以達到addsubView一樣的效果,而且好處多多
addChildViewController的好處:
1.無疑,對頁面中的邏輯更加分明瞭。相應的View對應相應的ViewController。
2.當某個子View沒有顯示時,將不會被Load,減少了內存的使用。
3.當內存緊張時,沒有Load的View將被首先釋放,優化了程序的內存釋放機制。
使用addChildViewController的三個步驟
1.addChildViewController:的同時調用addSubView:
[self addChildViewController:sfViewControllr];
[self.view addSubview:sfViewControllr.view];
2.設置子視圖的位置,並顯示出來
sfViewControllr.view.frame = CGRectMake(0, 300, 1, 1);
[sfViewControllr didMoveToParentViewController:self];
3.移除子視圖
[sfViewControllr willMoveToParentViewController:nil];
[sfViewControllr removeFromParentViewController];
[sfViewControllr.view removeFromSuperview];
可能遇到的問題:
如果在子Controller中,把自己從父Controller中移除,在ios6中沒問題,在iOS7中,會崩潰
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController]; //ios7中崩潰
暫時的解決方法,在子Controller中發通知,通知父Controller,移除子Controller