提前触发viewDidLoad方法

最近优化了一个问题,app启动时从广告页进入主界面时卡顿,app启动时是一个launch vc ,然后其上有个跳过按钮,点击之后利用nav 的 setViewControllers把main vc设置成根vc,但是由于main vc的xib加载比较耗时就出现了点击跳过时没反应的情况(其实就是main vc在加载xib view),而且在main vc还没显示出来时还能点击到main vc上的按钮,这个问题比较严重,会让人误以为是bug,所以优化了一下,想办法让main vc提前加载view。

解决方案也很简单,在launch vc中创建一个全局变量main vc,在viewDidLoad方法中初始化,然后调用main vc的loadViewIfNeeded就可以了。

说明:controller的view是懒加载,只要触发了view的getter方法,那么就会触发controller的viewDidLoad方法,因此在还没有push到某个controller之前如果使用了controller.view那么就会触发其viewDidLoad方法,当然 此时直接使用controller的loadViewIfNeeded方法很合适。

loadViewIfNeeded

Loads the view controller’s view if it has not yet been loaded.


相关方法:beginAppearanceTransition:animated: 、endAppearanceTransition (自定义controller时会使用到的方法,也是主动触发一些生命周期方法的,可在官方文档查看其说明)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 面试题参考1 : 面试题[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios阅读 1,762评论 0 4
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 4,359评论 0 11
  • 书上说: 时钟很少能衡量我们所感受到的时间,生命中真正的时间,正因为此,很多个日夜可以凝聚为几小时,反之亦然。在人...
    李豆豆豆豆豆吖豆阅读 308评论 0 0
  • 我想成為你心底的鬼 給小小的你一個溫暖的肩膀 要你不再一個人無助哭泣 我想成為你心底的鬼 人潮擁擠替你開闢出一條小...
    Mecki阅读 261评论 2 3