iOS - 父视图控制器增加或者删除子控制器方法

在iOS 5.0及以后,iOS为UIViewController类添加了新的属性和方法:

@property(nonatomic,readonly) NSArray *childViewControllers

// 向视图控制器容器中添加子视图控制器
- (void)addChildViewController:(UIViewController *)childController

// 从父视图控制器中删除
- (void) removeFromParentViewController

// 交换两个子视图控制器的位置
- (void)transitionFromViewController::::::

// 当一个视图控制器从视图控制器容器中被添加或者被删除之前,该方法被调用
- (void)willMoveToParentViewController:(UIViewController *)parent

// 当从一个视图控制容器中添加或者移除viewController后,该方法被调用
- (void)didMoveToParentViewController:(UIViewController *)paren

关于willMoveToParentViewController方法和didMoveToParentViewController方法的使用

1、这两个方法用在子视图控制器交换的时候调用!即调用transitionFromViewController 方法时调用;

2、当调用willMoveToParentViewController方法或didMoveToParentViewController方法时,要注意他们的参数使用:

当某个子视图控制器将从父视图控制器中删除时,parent参数为nil,
即:[将被删除的子试图控制器 willMoveToParentViewController:nil];

当某个子试图控制器将加入到父视图控制器时,parent参数为父视图控制器,
即:[将被加入的子视图控制器 didMoveToParentViewController:父视图控制器];

3、调用addChildViewController:方法时,系统默认会调用willMoveToParentViewController:方法,无需自己调用。但是我们必须在调用addChildViewController:方法后调用didMoveToParentViewController:方法,告诉iOS,已经完成添加(或删除)子控制器的操作;

4、调用removeFromParentViewController:方法时,系统默认会调用didMoveToParentViewController:方法,无需自己调用。但是我们必须先调用willMoveToParentViewController:方法,且parent参数为nil。

你可能感兴趣的:(iOS - 父视图控制器增加或者删除子控制器方法)