CrabMen / CMPageTitleView

✍️一分钟集成类似抖音,新浪微博,腾讯视频,网易新闻,今日头条等常见的标题栏样式,api灵活易扩展,支持Cocoapods和Masonry布局,支持ChildController的完整生命周期

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

能不能支持懒加载,不用一下子把全部页面全部加载出来

Wjy1005 opened this issue · comments

能不能支持懒加载,不用一下子把全部页面全部加载出来

commented

你把设置颜色的那个注释掉,不在主屏幕的就不会调用 viewDidLoad 了。

你把设置颜色的那个注释掉,不在主屏幕的就不会调用 viewDidLoad 了。

可以具体说下是哪个属性吗,我是直接调用
CMPageTitleConfig *config = [CMPageTitleConfig defaultConfig];

commented

你把设置颜色的那个注释掉,不在主屏幕的就不会调用viewDidLoad了。

可以具体说下是哪个属性吗,我是直接
调用CMPageTitleConfig * config = [CMPageTitleConfig defaultConfig];

我不是很明白你说的懒加载是什么意思。

当你alloc并init了一个ViewController时,这个ViewController应该是还没有创建view的。

ViewController的view是使用了lazyInit方式创建,就是说你调用的view属性的getter:[self view]。在getter里会先判断view是否创建,如果没有创建,那么会调用loadView来创建view。loadView完成时会继续调用viewDidLoad。loadView和viewDidLoad的一个区别就是:loadView时还没有view。而viewDidLoad时view以及创建好了。
https://www.cnblogs.com/xjy-123/p/5271063.html

commented

一般情况下,我们会在 viewDidLoad 中执行一些方法,比如网络请求,添加子视图什么的。这个完全没有问题。
你说的这个懒加载有什么意图?节省内存占用吗?先说需求,再确认方法。

https://github.com/CrabMen/CMPageTitleView/blob/master/CMPageTitleView/CMPageTitleView/Demo/CMViewController.m

把设置颜色的注释掉

- (NSArray *)childControllers {
    
    if (!_childControllers) {
        UIViewController *vc0 = [UIViewController new];
        UIViewController *vc1 = [UIViewController new];
        UIViewController *vc2 = [UIViewController new];
        UIViewController *vc3 = [UIViewController new];
        UIViewController *vc4 = [UIViewController new];
        UIViewController *vc5 = [UIViewController new];
        UIViewController *vc6 = [UIViewController new];
        UIViewController *vc7 = [UIViewController new];
        UIViewController *vc8 = [UIViewController new];
        UIViewController *vc9 = [UIViewController new];
        UIViewController *vc10 = [UIViewController new];
        
        vc0.title = @"推荐";
        vc1.title = @"小视频";
        vc2.title = @"视频";
        vc3.title = @"懂车帝";
        vc4.title = @"北京";
        vc5.title = @"娱乐";
        vc6.title = @"图片";
        vc7.title = @"热点";
        vc8.title = @"体育";
        vc9.title = @"财经";
        vc10.title = @"国际";

        
        //vc0.view.backgroundColor = CM_RANDOM_COLOR;
        //vc1.view.backgroundColor = CM_RANDOM_COLOR;
        //vc2.view.backgroundColor = CM_RANDOM_COLOR;
        //vc3.view.backgroundColor = CM_RANDOM_COLOR;
        //vc4.view.backgroundColor = CM_RANDOM_COLOR;
        //vc5.view.backgroundColor = CM_RANDOM_COLOR;
        //vc6.view.backgroundColor = CM_RANDOM_COLOR;
        //vc7.view.backgroundColor = CM_RANDOM_COLOR;
        //vc8.view.backgroundColor = CM_RANDOM_COLOR;
        //vc9.view.backgroundColor = CM_RANDOM_COLOR;
        // vc10.view.backgroundColor = CM_RANDOM_COLOR;
        

        _childControllers =@[vc0,vc1,vc2,vc3,vc4,vc5,vc6,vc7];
        
    }
    
    return _childControllers;
}

把这里的 UIViewController 换成你自定义的类就行了。

你把设置颜色的那个注释掉,不在主屏幕的就不会调用viewDidLoad了。

可以具体说下是哪个属性吗,我是直接
调用CMPageTitleConfig * config = [CMPageTitleConfig defaultConfig];

我不是很明白你说的懒加载是什么意思。

当你alloc并init了一个ViewController时,这个ViewController应该是还没有创建view的。

ViewController的view是使用了lazyInit方式创建,就是说你调用的view属性的getter:[self view]。在getter里会先判断view是否创建,如果没有创建,那么会调用loadView来创建view。loadView完成时会继续调用viewDidLoad。loadView和viewDidLoad的一个区别就是:loadView时还没有view。而viewDidLoad时view以及创建好了。
https://www.cnblogs.com/xjy-123/p/5271063.html

明白了,谢谢