ios零碎记录iOS学习笔记iOS Developer

iOS父子控制器添加与移除

2017-07-26  本文已影响1434人  蠢萌的L君

关于addChildViewConroller的相关问题。

    ExampleController *VC = [[ExampleController alloc]init];
    VC.view.frame = self.view.bounds;
    [self addChildViewController:VC];//1
    [self.view addSubview:VC.view];//2
    [VC didMoveToParentViewController:self];//3
  1. 首先将VC添加到控制器上,建立父子关系,这时可以通过parentViewController访问到父控制器;调用addChildViewController系统会自动调用willMoveToParentViewController:
  2. 将VC控制器的view添加到父控制器上。
  3. 调用VC的didMoveToParentViewController通知VC完成了父子关系建立。
    [VC willMoveToParentViewController:nil]; //1
    [VC.view removeFromSuperview]; //2
    [VC removeFromParentViewController]; //3
  1. 通知子控制器即将解除父子关系
  2. 将VC的view从父控制器移除
  3. 通过removeFromParentViewController真正解除父子关系,并且系统会调用didMoveToParentViewController:

方法说明

automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers = false,那么系统不会自动管理子视图控制器的生命周期

使用beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated和endAppearanceTransition来处理。

[VC beginAppearanceTransition:YES animated:YES]触发towCol的viewWillAppear。
[VC endAppearanceTransition]触发viewDidAppear。

[VC beginAppearanceTransition:NO animated:YES]触发towCol的viewWillDisappear。
[VC endAppearanceTransition]触发viewDidDisappear。
上一篇 下一篇

猜你喜欢

热点阅读