具有不同初始视图控制器的故事板

时间:2013-05-12 12:39:12

标签: ios xcode

启动不同视图时遇到问题。

我有一些教程。因此我在didFinishWithLaunchOptions中设置了这段代码:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) {
        // Schon mal geöffnen. Kein Tutorial
    }
    else {

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        // Wurde das erste mal geöffnet. Tutorial anzeigen!
    }

但我真的不知道如何让它实际上打开不同的观点。找不到任何文件:(

我只想打开一个教程viewController,如果它是第一次启动,如果它不是最初的viewController。

3 个答案:

答案 0 :(得分:1)

UIViewController *controller = nil;

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) {
    controller = [HomeViewController alloc] initWithNibName: @"HomeViewController" bundle: nil];
}
else {

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // Wurde das erste mal geöffnet. Tutorial anzeigen!

    controller = [TutorialViewController alloc] initWithNibName: @"TutorialViewController" bundle: nil];
}

self.window.rootViewController = controller;

答案 1 :(得分:1)

请查看此this question。我修改了答案以适合您的情况,您应该将以下代码放在application:didFinishLaunchingWithOptions:

NSString *storyboardIdentifier;
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) {
    // Schon mal geöffnen. Kein Tutorial
    storyboardIdentifier = @"mainViewController";
} else {
    // Wurde das erste mal geöffnet. Tutorial anzeigen!
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    storyboardIdentifier = @"tutorialViewController";
}

UIViewController *rootViewController = [[[[self window] rootViewController] storyboard] instantiateViewControllerWithIdentifier:storyboardIdentifier];
[[self window] setRootViewController:rootViewController];

答案 2 :(得分:0)

要从故事板中实例化视图控制器,以下内容将起作用:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

TutorialViewController *controller = (TutorialViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"TutorialViewControllerID"];

请记住在故事板中为viewcontroller设置ID。