2014-12-01 3 views
0

Я разрабатываю приложение iOS 7+, и мне сказали установить другое начальное представление для приложения в зависимости от параметра, который я не буду знать до времени выполнения. Одним из возможных начальных UIViewController является UITabBarViewController, а другой - UINavigationController.Раскадровка: установка начального контроллера представления во время выполнения

Возможно ли это с помощью storyboard? Или это единственный способ использовать отделенные файлы nib?

Благодаря

+0

Возможный дубликат [Programatically установить начальный контроллер представления с помощью раскадровки] (HTTP://stackoverflow.com/questions/10428629/programatically-set-the-initial-view-controller-using-storyboards) –

ответ

2

Нет необходимости использовать отдельные СИБ файлы, я делаю то же самое, следующий код в 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]; 
} 
0

Вы можете указать свой идентификатор UITabBarViewController и UINavigationController в storyboard.Then вручную установить 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]; 

}

0

Я не уверен, если я верно вас понял, но попытаться использовать JLRoutes. Установите свой TabBarController в качестве начального контроллера представления в одной раскадровке, а навигационный контроллер будет инициализирован в другой раскадровке. Затем перемещаться между ними с помощью JLRoutes