我正在开发一个iOS 7+应用程序,并且我被告知要为应用程序设置不同的初始视图,具体取决于我在运行时之前不会知道的参数。其中一个可能的初始UIViewController
是UITabBarViewController
,另一个是UINavigationController
。
是否可以使用storyboard
进行管理?或者它是使用分隔的nib
文件的唯一方法吗?
由于
答案 0 :(得分:2)
不需要使用单独的nib文件,我通过遵循AppDelegate中的代码
来做同样的事情- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
if(condition1) {
UITabBarController *rootViewController= [storyboard instantiateViewControllerWithIdentifier:@"TabbarController"];
[self setRootViewController:rootViewController];
} else if(condition2) {
UIViewController *rootViewController= [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self setRootViewController:rootViewController];
} else {
UIViewController *rootViewController= [storyboard instantiateViewControllerWithIdentifier:@"ViewController1"];
[self setRootViewController:rootViewController];
}
}
-(void)setRootViewController:(UIViewController *)rootViewController {
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
}
答案 1 :(得分:0)
您可以在storyboard中指定UITabBarViewController和UINavigationController的ID。然后手动设置应用程序的rootViewController,如下面的代码所示。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [board instantiateViewControllerWithIdentifier:@"TabBarController"];
[self.window makeKeyAndVisible];
}
答案 2 :(得分:0)
我不确定我是否理解你,但尝试使用JLRoutes。在一个故事板中将TabBarController设置为初始视图控制器,导航控制器将在其他故事板中初始化。然后使用JLRoutes
在它们之间导航