您认为加载可选UIViewController的最佳策略是什么?以下是当前的设置:
我使用的是这个库https://github.com/flubbermedia/FMRevealViewController,它是一个自定义容器视图控制器,它模仿现在非常常见的mainViewController设置,以及当用户单击左或右( la Facebook)时“显示”的sideViewController。
顺便说一句。通常,我会在AppDidFinishLaunching中同时设置视图控制器(主控制器和视图控制器)。不过,我有一个应用程序,其中sideViewController的加载时间有点长(大约0.3s)。有很多原因我无法摆脱它。同时,我的应用程序必须尽可能快地加载。最后,当用户滑动时我无法加载它..。因为这会导致内容的可视化出现明显的延迟。
我想要达到的是某种“延迟预压”。
我基本上需要预装sideViewController.但只有在mainViewController完全加载并在屏幕上可见之后。
我的第一次尝试是使用appDidFinishLaunching:中的一个appDidFinishLaunching:将sideViewController的加载延迟两秒钟.但这不是一个非常有力的解决方案。
现在我正在考虑将sideViewController加载到mainViewController的viewDidAppear方法中.但是我也不喜欢这个解决方案,我更愿意保持两个视图控制器的解耦。我担心viewDidAppear的可靠性,因为它是由FMRevealViewController而不是操作系统管理的。
你怎么做?
发布于 2014-12-13 11:49:12
尝试将sideViewController加载到AppDelegate方法applicationDidBecomeActive:上。只有在应用程序在启动后处于活动状态之后才会调用此委托,因此您的mainViewController已经加载并在窗口上可见。在我的应用程序上进行测试时,它只在窗口的viewDidAppear‘s rootViewController之后调用。
在文档中,“您应该使用此方法重新启动应用程序处于非活动状态时暂停(或尚未启动)的任何任务。”
由于每次应用程序从非活动状态移动到活动状态时都调用此委托方法,您只需检查sideViewController是否存在,以便只在应用程序启动时初始化该方法。
基于注释的编辑和对问题的编辑
考虑到FMRevealViewController是一个自定义容器视图控制器,mainViewController将是它的子contentViewController,sideViewController将是另一个子VC。因此,这两者都将被添加到FMRevealViewController的视图层次结构中。
在这种情况下,在sideViewController实例的viewDidAppear方法中加载FMRevealViewController是有意义的。但是,通过其同级mainViewControler ( contentViewController)初始化它是没有意义的,这似乎是一个困惑之处。
因此,在使用自定义容器VC的viewDidAppear初始化子VC或在委托的applicationDidBecomeActive:上初始化子VC之间,苹果文档的读取将指向前者:“您的容器应该制定规则,其子容器应该遵循规则(.)自定义容器视图控制器负责管理自己的视图层次结构,其他类不应操纵其内容。“
https://stackoverflow.com/questions/27454131
复制相似问题