iOS開發之使用addChildViewController:給控制器添加子控制器

在iOS5中,ViewController中新添加了下面幾個方法:

addChildViewController:是UIViewController的一個方法,iOS5之後加入的,使用這個方法可以達到addsubView一樣的效果,而且好處多多

addChildViewController的好處:

     1.無疑,對頁面中的邏輯更加分明瞭。相應的View對應相應的ViewController。 
     2.當某個子View沒有顯示時,將不會被Load,減少了內存的使用。 
     3.當內存緊張時,沒有LoadView將被首先釋放,優化了程序的內存釋放機制。

使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章