CDDPagerController版本更新

作者: RocketsChen | 来源:发表于2017-10-18 17:36 被阅读305次
    最近有给我反馈CDDPagerController框架有点小Bug,查看下源码还真是,生命周期那还真出了问题。我花了点时间解决了并重新更新的框架。

    cd 项目 return pod update 更新下 最新版本 1.1.1
    成功更新如下:
    Installing CDDPagerController 1.1.1 (was 1.1.0)

    Bug重现

    有时候我们的父子控制器的标题数组是通过服务器请求返回的,这样就造成一种情况延迟。所以我进行了如下的模拟

    #pragma mark - 添加所有子控制器
    - (void)setUpAllChildViewController
    {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //模拟网络延迟
            
            NSArray *titles = @[@"测试01",@"测试02",@"测试03",@"测试04",@"测试05",@"测试06",@"测试07",@"测试08",@"测试09"];
            for (NSInteger i = 0; i < titles.count; i++) {
                UIViewController *vc = [UIViewController new];
                vc.title = titles[i];
                vc.view.backgroundColor = RandColor; //随机色
                [self addChildViewController:vc];
            }
        });
    }
    
    
    Bug重现

    GIF很直接的可以看出,模拟网络延迟之后,父子控制器并未能正常加载。可以看出很有可能是等模拟网络延迟在addChildViewController的时候,框架内部的生命周期已经结束了。

    解决方案

    我在DCPagerController.h声明类方法,供网络延迟使用

    /**
     刷新标题和整个界面,在调用之前,需要获取到所有的子控制器。
     */
    - (void)setUpRefreshDisplay;
    
    
    然后在网络延迟add之后调用刷新方法
    #pragma mark - 添加所有子控制器
    - (void)setUpAllChildViewController
    {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //模拟网络延迟
            
            NSArray *titles = @[@"测试01",@"测试02",@"测试03",@"测试04",@"测试05",@"测试06",@"测试07",@"测试08",@"测试09"];
            for (NSInteger i = 0; i < titles.count; i++) {
                UIViewController *vc = [UIViewController new];
                vc.title = titles[i];
                vc.view.backgroundColor = RandColor; //随机色
                [self addChildViewController:vc];
            }
            [self setUpRefreshDisplay]; //刷新
        });
    }
    
    解决
    如果想具体查看源码,请下载查看。框架地址:CDDPagerController

    相关文章

      网友评论

        本文标题:CDDPagerController版本更新

        本文链接:https://www.haomeiwen.com/subject/uzjeuxtx.html