在 iOS 5 中使用带有情节提要的选项卡时,其中一些在切换到它时可能需要很长时间才能初始化(例如,包含 GLKViewController 的选项卡)。
发生这种情况是因为此控制器中 viewDidLoad 方法的工作量可能非常大。
有没有办法在早期阶段初始化故事板中定义的特定视图控制器(并将其称为 viewDidLoad 方法) - 当应用程序启动时?完成此操作后,应消除延迟。
在 iOS 5 中使用带有情节提要的选项卡时,其中一些在切换到它时可能需要很长时间才能初始化(例如,包含 GLKViewController 的选项卡)。
发生这种情况是因为此控制器中 viewDidLoad 方法的工作量可能非常大。
有没有办法在早期阶段初始化故事板中定义的特定视图控制器(并将其称为 viewDidLoad 方法) - 当应用程序启动时?完成此操作后,应消除延迟。
您确定这是视图控制器的实例化而不是viewDidLoad
方法吗?视图控制器可能都是在情节提要解包时创建的,但是视图控制器会尝试尽可能长时间地延迟加载其实际视图对象;在访问子类的属性viewDidLoad
之前不会调用。view
UIViewController
所以解决这个问题的方法可能是手动访问视图属性:
__unused CGRect frame = [[tabBarController.viewControllers objectAtIndex:index] view].frame;
如果减速实际上是在实例化中,并且在您切换到该选项卡之前没有创建视图控制器,那么您将不得不通过以编程方式访问它来强制实例化视图控制器,就像在上面的示例中一样.
调用 vewcontroller 的框架或 .view 属性很可能会起作用,但我不建议您搞乱 viewcontroller 初始化和视图设置
由于以下原因
如果我遇到这样的问题,我会例如在应用程序委托中单独创建 GLKViewController 并将其保存在那里,直到在 viewController 中调用 viewDidLoad,然后我会将这个初始化的 GLKViewController 移动到 viewController