在iOS5中,ViewController中新添加了下面幾個(gè)方法:
addChildViewController:是UIViewController的一個(gè)方法,iOS5之后加入的,使用這個(gè)方法可以達(dá)到addsubView一樣的效果,而且好處多多
addChildViewController的好處:
1.無疑,對(duì)頁(yè)面中的邏輯更加分明了。相應(yīng)的View對(duì)應(yīng)相應(yīng)的ViewController。 2.當(dāng)某個(gè)子View沒有顯示時(shí),將不會(huì)被Load,減少了內(nèi)存的使用。 3.當(dāng)內(nèi)存緊張時(shí),沒有Load的View將被首先釋放,優(yōu)化了程序的內(nèi)存釋放機(jī)制。使用addChildViewController的三個(gè)步驟
1.addChildViewController:的同時(shí)調(diào)用addSubView:
[self addChildViewController:sfViewControllr]; [self.view addSubview:sfViewControllr.view];2.設(shè)置子視圖的位置,并顯示出來
sfViewControllr.view.frame = CGRectMake(0, 300, 1, 1); [sfViewControllr didMoveToParentViewController:self];3.移除子視圖
[sfViewControllr willMoveToParentViewController:nil]; [sfViewControllr removeFromParentViewController]; [sfViewControllr.view removeFromSuperview];可能遇到的問題: 如果在子Controller中,把自己從父Controller中移除,在ios6中沒問題,在iOS7中,會(huì)崩潰
[self willMoveToParentViewController:nil];[self.view removeFromSuperview];[self removeFromParentViewController]; //ios7中崩潰暫時(shí)的解決方法,在子Controller中發(fā)通知,通知父Controller,移除子Controller
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注