我有一个带有Tab Bar Controller的应用程序和很多UIViewController,我在storyboard上定义了界面,我希望当用户午餐时应用程序(当加载应用程序时)所有的ControllerView都被加载,而不是当用户选择时选项卡(My UIViewController很复杂,加载时间很短)
答案 0 :(得分:1)
您发布的答案不正确;您不应手动拨打-loadView
。来自documentation:
<强>讨论强>
你永远不应该直接调用这个方法。风景 controller在请求view属性时调用此方法 目前是零。此方法加载或创建视图并分配它 到视图属性。
所以你应该只是访问view
属性。您修改后的代码将是:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
for(int i = 0; i < 5; i++) {
[[tabBar.tabBarController.viewControllers objectAtIndex:i] view];
}
另请注意,此工作可能不应在-application:didFinishLaunchingWithOptions:
方法中进行,因为如果此方法在5秒内未返回,iOS将终止您的应用。您可以在下一个runloop迭代中安排此任务,如下所示:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self preloadTabs];
}];