UIViewController中addChildViewController的坑:viewWillAppear不调用

项目中有一个需求是,需要在一个父UIViewController中,加载一个子ViewController。我这里是用的方式是:

    [self addChildViewController:_baseVC];

    [self.view addSubview:_baseVC.view];

这里有个坑就是:子viewcontroller的viewWillAppear不会被调用!!!!

viewDidLoad和viewDidAppear都会调用。我这里的解决方案是在父VC中手动调用。但是造成这样的原因还不清楚。

找到了解决方案:

    [self addChildViewController:_baseVC];

    //手动调用viewWillAppear!因为通过addsubview的方法延时加载,这个方法会被跳过

    [_baseVC beginAppearanceTransition:YES animated:YES];

    [self.view addSubview:_baseVC.view];

添加beginAppearanceTransition方法之后可以调用viewWillAppear了


移除这个VC的时候,如下调用,确保viewWillDisappear和viewDidDisappear被调用

    [childController beginAppearanceTransition:NO animated:YES];
    [childController.view removeFromSuperview];
    [childController endAppearanceTransition];

链接:

http://stackoverflow.com/questions/29710371/viewwillappear-is-not-called-when-add-child-controller-to-table-view-cell

发布了48 篇原创文章 · 获赞 0 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览