如何在应用程序启动时加载所有选项卡视图控制器

时间:2012-10-08 12:29:27

标签: iphone uitabbarcontroller loadview

基本上,当我启动应用程序时,我会显示选项卡视图控制器,它会显示第一个选项卡,并仅加载第一个选项卡。我想同时预加载其余的视图控制器。我发现了这篇文章 - Load All TabBar Views

但我收到了错误。我在标签栏控制器的[subcontroller view]方法中调用viewDidLoad。我正在使用故事板。问题是我收到错误 - 无法在捆绑中加载NIB:'NSBundle'

我缺少什么?

编辑:

我将尝试更简洁 - Tabbar有4个视图控制器,对应4个不同的选项卡。当用户按Tab键时,会加载相应的视图控制器。首次启动应用程序时,仅加载第一个视图控制器。其他视图控制器未加载,用户点击其标签后会加载它们。我希望所有这些控制器都加载到内存中,这样我就可以对它们做些什么(它们不会显示在屏幕上)。

2 个答案:

答案 0 :(得分:0)

//在项目

中的appdelegate.h文件中加载所有视图控制器
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 ViewController1 *view1=[[ViewController1 alloc]initWithNibName:nil bundle:nil   ];
 view1.tabBarItem.image = [UIImage imageNamed:@"1.jpg"];
 UINavigationController *navi1=[[UINavigationController alloc]initWithRootViewController:view1];

ViewController2 *view2=[[ViewController2 alloc]initWithNibName:nil bundle:nil   ];
 view1.tabBarItem.image = [UIImage imageNamed:@"1.jpg"];
 UINavigationController *navi2=[[UINavigationController alloc]initWithRootViewController:view2];
  NSArray *navi= [[NSArray alloc]initWithObjects:navi1,navi2,navi3,navi4,nil];

 UITabBarController * bar=[[UITabBarController alloc]init];
 NSArray *navi= [[NSArray alloc]initWithObjects:view1,view2,nil];
 bar.viewControllers=navi;
 [self.bar setViewControllers:navi animated:YES];
 self.window.rootViewController=self.bar;
 [self.window addSubview:bar.view];
  [self.window makeKeyAndVisible];
  return YES;

}

}

答案 1 :(得分:-2)

就像我理解的那样,你想要加载所有其他视图并准备好午餐时按下你的按钮:) 如果你想要你可以加载它并在后台构建它并将其添加到视图中,但你需要隐藏它,直到你按u显示你想要的视图并隐藏其他视图。

如果您构建自定义标签,则此答案有效:)