2012-02-15 3 views
0

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

- (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, чтобы вернуться к корневому контроллеру. Выполнение кода в письменном виде никогда не отображает вид инструкций. Единственный способ, с помощью которого я могу видеть инструкцииПиоконтроллер, - это изменить строку [self.viewController presentModalViewController:howtoNavController animated:NO]; на self.window.rootViewController = self.instructionsViewController;, но это явно не то, что я хочу (если только я не смогу вернуться к viewController).

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

ответ

2

Попробуйте переместить [self showInstructions]; на applicationDidBecomeActive:.

+0

Wow. Огромное спасибо. Я не думаю, что я бы подумал сделать это. –

0

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

[self.window makeKeyAndVisible]; 

if (!hasShownStartup) { 
    [self showInstructions]; 
} 
Смежные вопросы