学习使用addChildViewController

ViewController有一个方法是addChildViewController,但是,我并不知道如何的管理这个添加上去的子类Controller。所以查找了资料,学习了他的一些相关方法,在这里做些简单的介绍。
首先是介绍添加Controller:

    TowController *towCol = [[TowController alloc]init];
    towCol.view.frame = self.view.bounds;
    [self addChildViewController:towCol];//1
    [self.view addSubview:towCol.view];//2
    [towCol didMoveToParentViewController:self];//3

1.将towCol添加到Controller的childViewController,建立父子关系。可以通过parentViewController访问towCol的父类,调用addChildViewController方法系统会自动调用willMoveToParentViewController:方法。
2.将towCol的view加到父类的view上去,当然还要确定view在父类view上的frame。
3.调用child的 didMoveToParentViewController: ,以通知child,完成了父子关系的建立。

接着介绍移除一个Controller:

    [towCol willMoveToParentViewController:nil]; //1
    [towCol.view removeFromSuperview]; //2
    [towCol removeFromParentViewController]; //3

1.通知child,即将解除父子关系,设置 child的parent即将为nil。
2.将child的view从父类的view中移除 。
3.通过removeFromParentViewController的调用真正的解除关系,removeFromParentViewController会自动调用
[towCol didMoveToParentViewController:nil]。
这样简单的添加和移除的就ok了。

Controller里面的viewWillAppear:(BOOL)animated在subview真正加到父view之前调用,viewDidAppear:(BOOL)animated在真正被add到父view之后调用,视图消失也是一样。

[towCol beginAppearanceTransition:YES animated:YES]触发towCol的viewWillAppear,[towCol beginAppearanceTransition:NO animated:YES]触发towCol的viewWillDisappear,和他们配套的[towCol endAppearanceTransition]分别触发viewDidAppear和viewDidDisappear
当然还有视图旋转的方法在这里就不介绍了,可以自己去找资料。

初次接触,我也只能了解这么多了,如果想要深入了解,可以自行查找资料。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容