2011-01-29 43 views
0

在我的iPhone应用程序中,我有eah项目的唯一标识符。我希望当用户登录唯一标识符时可以在每个页面上访问。如何在标签栏中切换不同标签时管理NSUserDefaults?

我正在使用NSUserDefaults来做到这一点。但问题是,登录不是第一页。所以如果我访问一些需要唯一标识的页面,它会显示“unknownkey”。

我该如何解决这个问题?

此外,我无法将登录屏幕添加为第一个屏幕,因为用户无需登录即可访问某些部分。

回答

1

尝试像

if (![[NSUserDefaults standardUserDefaults] objectForKey: @"uniqueid"]) { 
    //...user is not logged in.. 
} else { 
    //...user is logged in... 
} 
0

我想这是一个设计问题,而不是编程问题?

您可以将您的登录屏幕移动到启动屏幕或将标签栏保持原样,直到用户登录,甚至以不同的方式重新设计整个事物。

+0

我已经编辑了我的问题。所以请检查“编辑”部分。 – 2011-01-29 13:09:35

+0

我的答案并没有真正改变。你必须重新设计你的设计。 – pt2ph8 2011-01-29 13:15:51

0

如果登录是必要的一切(例如,您的应用程序是一个Dropbox的客户端),模态呈现登录的viewController在应用程序启动。
并且在成功登录之前不要解雇它。

0

在您的RootViewController的viewDidLoad方法中,您需要通过IF语句检查保存的NSUserDefault。简单。

-(void)viewDidLoad { 

    if(![[NSUserDefaults standardDefaults] objectForKey:@"uniqueid"]) { 
    // here you'll want to present a view modally inside a new navigation controller. 

    LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 

    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:lvc]; 

    [self.navigationController presentModalViewController:controller animated:YES]; 

} else { 

    // this is where you'd set up the client if the user is already logged in. 

    } 
}