仅在首次启动时显示教程屏幕

时间:2015-01-11 21:33:07

标签: ios objective-c appdelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
    {
        MenuViewController *menu=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"home"];
        MainNavigationController *navController=[[MainNavigationController alloc]initWithRootViewController:menu];
        self.window.rootViewController=navController;
    }
    else
    {
        LaunchViewController *vc=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"tutorial"];
        self.window.rootViewController=vc;
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    return YES;
}

我在上面的app delegate中使用以下代码仅在第一次启动时显示Launchviewcontroller,但由于某种原因它无法正常工作!

2 个答案:

答案 0 :(得分:0)

对于我要做的事情,我将首先从菜单中选择iOS模拟器来重置模拟器。然后,选择重置内容和设置。它将清除所有 NSUserDefaults 数据。因此,我可以更多地了解问题所在。

- application: didFinishLaunchingWithOptions:方法仅在您启动时调用。这意味着当您从背景转移到前景时,它不会被调用。

我想你可能需要了解这个过程。希望这会有所帮助。

答案 1 :(得分:-1)

我不确定,但有时我不能将Bool值添加到NSUserDefaults,让我们试试NSString(考试:HasLaunchedOnce = @" 0" / @" 1")