willMoveToParentViewController && didMoveToParentViewController

  • 1、 @property(nonatomic,readonly) NSArray *childViewControllers NS_AVAILABLE_IOS(5_0);

获取所有的子视图控制器

  • 2、 - (void)addChildViewController:(UIViewController *)childController NS_AVAILABLE_IOS(5_0);

向视图控制器容器中添加子视图控制器;图控制器A添加了另一个图控制器B,那么A充当父视图控制器,B充当子视图控制器。父视图控制器充当了视图控制器容器的角色。当要添加的子视图控制器已经包含在视图控制器容器中,那么,相当于先从父视图控制器中删除,然后重新添加到父视图控制器中

childController:子视图控制器

例如:[父视图控制器 addChildViewController:子视图控制器];
  • 3、 - (void) removeFromParentViewController NS_AVAILABLE_IOS(5_0);

从父视图控制器中移除;

  • 4、 - (void)transitionFromViewController:(UIViewController )fromViewController toViewController:(UIViewController )toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(5_0);

交换两个子视图控制器的位置(由于添加的顺序不同,所以子视图控制器在父视图控制器中存在层次关系);

参数:

    fromViewController :当前显示的子视图控制器,将被替换为非显示状态;
    toViewController   :将要显示的子视图控制器;
    duration           :交换动画持续的时间,单位秒;
    options            :动画的方式;
    animations         :动画Block;
    completion         :完成后执行的Block;
  • 5、 - (void)willMoveToParentViewController:(UIViewController *)parent NS_AVAILABLE_IOS(5_0);

当一个子视图控制器从父视图控制器中被添加或者被删除之前,该方法被调用;

参数:

parent:父视图控制器,如果没有父视图控制器,将为nil;

注意:
①、当我们调用addChildViewController方法添加子视图控制器时,在添加子视图控制器之前将自动调用该方法;所以不需要我们显示调用;
②、当我们向视图控制器容器中调用removeFromParentViewController方法时,必须要现调用该方法,且parent参数为nil;
[将要删除的视图控制器 removeFromParentViewController:nil];

  • 6、 - (void)didMoveToParentViewController:(UIViewController *)parent NS_AVAILABLE_IOS(5_0);

当从一个视图控制器容易中添加或者移除viewController后,该方法被调用;

参数:

parent:父视图控制器,如果没有父视图控制器,将为nil;

注意:
①、当我们向父视图控制器容器(也就是调用addChildViewController方法添加子视图控制器)中添加子视图控制器后,必须调用该方法,告诉iOS,已经完成添加子视图控制器的操作;
[将要添加的视图控制器 addChildViewController:父视图控制器];
②、当我们调用removeFromParentViewController方法删除子视图控制器时,删除后会自动调用该方法,所以不需要我们显示调用;

你可能感兴趣的:(ios)