如何在标签栏中的不同选项卡之间切换时管理NSUserDefaults?

时间:2011-01-29 12:47:37

标签: iphone cocoa-touch ios4 nsuserdefaults

在我的iPhone应用程序中,我拥有eah项目的唯一标识符。我希望当用户登录时,每个页面都可以访问唯一标识符。

我正在使用NSUserDefaults来做到这一点。但问题是登录不是第一页。因此,如果我访问某个需要唯一ID的页面,那么它会显示“unknownkey”。

我该如何解决这个问题?

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

4 个答案:

答案 0 :(得分:1)

尝试类似

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果所有内容都需要登录(例如您的应用程序是Dropbox客户端),请在应用程序启动时以模态方式显示登录viewController。 并且在您成功登录之前不要忽略它。

答案 3 :(得分: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.

    }
 }