基本上,当我启动应用程序时,我会显示选项卡视图控制器,它会显示第一个选项卡,并仅加载第一个选项卡。我想同时预加载其余的视图控制器。我发现了这篇文章 - Load All TabBar Views
但我收到了错误。我在标签栏控制器的[subcontroller view]
方法中调用viewDidLoad
。我正在使用故事板。问题是我收到错误 - 无法在捆绑中加载NIB:'NSBundle'
我缺少什么?
编辑:
我将尝试更简洁 - Tabbar有4个视图控制器,对应4个不同的选项卡。当用户按Tab键时,会加载相应的视图控制器。首次启动应用程序时,仅加载第一个视图控制器。其他视图控制器未加载,用户点击其标签后会加载它们。我希望所有这些控制器都加载到内存中,这样我就可以对它们做些什么(它们不会显示在屏幕上)。
答案 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显示你想要的视图并隐藏其他视图。
如果您构建自定义标签,则此答案有效:)