Показать View Controller Модально при первом запуске - PullRequest
0 голосов
/ 16 февраля 2012

Я хотел бы получить представление о том, как использовать мое приложение, которое будет отображаться при первом запуске приложения. Я справился с проблемой показа только этого представления при первом запуске с использованием NSUserDefaults, но у меня возникли проблемы с отображением представления так, как я хочу, модально, а не как rootViewController. Вот мой код AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];

    self.window.rootViewController = self.viewController;

    BOOL hasShownStartup = [[NSUserDefaults standardUserDefaults] boolForKey:kAppHasShownStartupScreen];

    if (!hasShownStartup) {
        [self showInstructions];
    }

    [self.window makeKeyAndVisible];
    return YES;
}

- (void)showInstructions
{
    NSLog(@"showing instructions");
    InstructionsViewController *howToView = [[InstructionsViewController alloc] initWithNibName:@"InstructionsViewController"
                                                                                     bundle:nil];
    self.instructionsViewController = howToView;
    [howToView release];
    UINavigationController *howtoNavController = [[UINavigationController alloc]
                                             initWithRootViewController:self.instructionsViewController];
    self.instructionsViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self.viewController presentModalViewController:howtoNavController animated:NO];
    [howtoNavController release];
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAppHasShownStartupScreen];
}

Я хочу, чтобы мой rootViewController оставался self.viewController. Я хочу иметь возможность щелкнуть «Готово» на панели навигации инструкций ViewController, чтобы вернуться обратно к rootViewController. Выполнение кода в том виде, в котором оно написано, никогда не показывает представление инструкций. Единственный способ увидеть инструкцииViewViewController - это изменить строку [self.viewController presentModalViewController:howtoNavController animated:NO]; на self.window.rootViewController = self.instructionsViewController;, но это, очевидно, не то, что я хочу (если только я не смогу модально перейти обратно к viewController).

Надеюсь, я достаточно ясно дал понять, чего я пытаюсь достичь. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Попробуйте вместо [self showInstructions]; applicationDidBecomeActive:.

0 голосов
/ 16 февраля 2012

Попробуйте поставить [self showInstructions] после [self.window makeKeyAndVisible]:

[self.window makeKeyAndVisible];

if (!hasShownStartup) {
    [self showInstructions];
}
...