在iOS 5.0及以后,iOS為UIViewController類添加了新的屬性和方法:
@property(nonatomic,readonly) NSArray *childViewControllers
// 向視圖控制器容器中添加子視圖控制器
- (void)addChildViewController:(UIViewController *)childController
// 從父視圖控制器中刪除
- (void) removeFromParentViewController
// 交換兩個子視圖控制器的位置
- (void)transitionFromViewController::::::
// 當(dāng)一個視圖控制器從視圖控制器容器中被添加或者被刪除之前,該方法被調(diào)用
- (void)willMoveToParentViewController:(UIViewController *)parent
// 當(dāng)從一個視圖控制容器中添加或者移除viewController后,該方法被調(diào)用
- (void)didMoveToParentViewController:(UIViewController *)paren
關(guān)于willMoveToParentViewController方法和didMoveToParentViewController方法的使用
1、這兩個方法用在子視圖控制器交換的時候調(diào)用!即調(diào)用transitionFromViewController 方法時調(diào)用;
2、當(dāng)調(diào)用willMoveToParentViewController方法或didMoveToParentViewController方法時,要注意他們的參數(shù)使用:
當(dāng)某個子視圖控制器將從父視圖控制器中刪除時,parent參數(shù)為nil,
即:[將被刪除的子試圖控制器 willMoveToParentViewController:nil];
當(dāng)某個子試圖控制器將加入到父視圖控制器時,parent參數(shù)為父視圖控制器,
即:[將被加入的子視圖控制器 didMoveToParentViewController:父視圖控制器];
3、調(diào)用addChildViewController:方法時,系統(tǒng)默認會調(diào)用willMoveToParentViewController:方法,無需自己調(diào)用。但是我們必須在調(diào)用addChildViewController:方法后調(diào)用didMoveToParentViewController:方法,告訴iOS,已經(jīng)完成添加(或刪除)子控制器的操作;
4、調(diào)用removeFromParentViewController:方法時,系統(tǒng)默認會調(diào)用didMoveToParentViewController:方法,無需自己調(diào)用。但是我們必須先調(diào)用willMoveToParentViewController:方法,且parent參數(shù)為nil。