2014-11-27 6 views
0

Я хочу отобразить программно созданный ViewController в раскадровке ViewController. ViewController раскадровки имеет другой класс, как «программно» созданный ViewController.Init программный VC для раскадровки VC

У меня есть следующие классы:

ViewController (linked to storyboard scene, and implementation happens here) 
OnboardingVC (all elements are created over here) 

Я пробовал следующее:

-(id)initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if(self){ 
     self.onboardVC = [self generateFirstDemoVC]; // returns in an instance ofOnboardingViewController 
     self = (ViewController*)self.onboardVC; 
    } 

    return self; 
} 

Это (очевидно) падает.

То, что я не хочу это:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
[self.window setRootViewController:self.onboardVC]; 
[self.window makeKeyAndVisible]; 

Поскольку это не принимает установку в раскадровке в счет, и я не хочу этого, потому что VC необходимо управляемое с помощью NavigationController. Как это сделать?

ответ

1

Похоже, у вас есть UINavigationController в качестве точки входа в раскадровку. Вы можете управлять навигационным контроллером, когда запускает приложение, добавлять, удалять или заменять контроллеры просмотра и т.д.

Например:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
{ 
    UIViewController* initialVc = [OnboardingViewController generateFirstDemoVC]; // or whatever 

    UINavigationController* nav = (id)_window.rootViewController; 
    nav.viewControllers = @[ initialVc ]; 

    return YES; 
} 
+0

это делает одно и то же .. А вид я попытка запуска - это не первоначальное представление. – bdv

Смежные вопросы