设置页面只显示一次

时间:2014-04-30 12:01:01

标签: ios objective-c

我有一个应该只显示设置页面的应用程序:第一次打开应用程序时。

现在这样可行,当用户按下iPhone上的中间按钮时,它会重新打开应用程序并从主屏幕继续 - 这很棒。但是,如果我双击iPhone按钮并关闭应用程序,它将再次进入设置屏幕而不是它的位置。

为什么这样做?如何让我的应用只显示一次设置?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    NSUserDefaults *settingsscreen = [NSUserDefaults standardUserDefaults];
    [settingsscreen registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstTime", nil]];
    BOOL firstTime = [settingsscreen boolForKey:@"firstTime"];

    if ( firstTime==YES) {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SettingsShown"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"SetUpNav"];
    }
    else
    {
        return YES;
    }
}

2 个答案:

答案 0 :(得分:4)

不要基于if ( firstTime==YES) {使用@"firstTime",因为该标志实际上从未保存过。您应该使用用@"SettingsShown"键保存的标志。

BOOL firstTime = [settingsscreen boolForKey:@"SettingsShown"];

if (!firstTime) {
    ...

答案 1 :(得分:1)

相反,在appDelegate中尝试在设置Page本身时实现它

     -(void) viewDidLoad {

       NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

       username = [defaults objectForKey:@"username"];

      if (username != NULL ) {
            [self selfLogin];
         }
}

-(void)selfLogin{

        nextPageController = [[NextPageViewController alloc]init];
        [self.navigationController pushViewController:nextPageController                animated:YES];

}