启动应用程序时加载所有UIViewController

时间:2012-10-04 13:11:31

标签: ios uiviewcontroller load storyboard tabbarcontroller

我有一个带有Tab Bar Controller的应用程序和很多UIViewController,我在storyboard上定义了界面,我希望当用户午餐时应用程序(当加载应用程序时)所有的ControllerView都被加载,而不是当用户选择时选项卡(My UIViewController很复杂,加载时间很短)

1 个答案:

答案 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];
}];