iOS 添加子VC的正确姿势

这几天在项目中需要在VC中添加做一个添加子vc的需求;

一般就是 添加子VC的view到父VC的view上,再添加子VC的view到父VC的view上;

但是这不是正确姿势; 今天看了下官方文档;需要调用以下这俩个方法

- (void)willMoveToParentViewController:(nullable UIViewController *)parent 
- (void)didMoveToParentViewController:(nullable UIViewController *)parent 

这个俩个方法是在添加vc和移除vc需要调用的;

- (void)addChildVc:(UIViewController*)vc view:(UIView *)view
{
    BOOL needAddToParent = !vc.parentViewController;
    if (needAddToParent) [self addChildViewController:vc];
    vc.view.frame = view.bounds;
    [view addSubview:vc.view];
    if (needAddToParent) [vc didMoveToParentViewController:self];
}
- (void)removeChildVc:(UIViewController*)vc
{
    [vc willMoveToParentViewController:nil];
    if (![vc isViewLoaded]) {
        [vc removeFromParentViewController];
    }
    else {
        [vc.view removeFromSuperview];
        [vc removeFromParentViewController];
    }
}

摘抄网易云课一张图


iOS 添加子VC的正确姿势_第1张图片
添加和移除关系图

你可能感兴趣的:(iOS 添加子VC的正确姿势)