Как управлять NSUserDefaults при переключении между различными вкладками в панели вкладок? - PullRequest
0 голосов
/ 29 января 2011

В моем приложении для iPhone у меня есть уникальный идентификатор для проекта eah. Я хочу, чтобы при входе пользователя в систему уникальный идентификатор был доступен на каждой странице.

Я использую NSUserDefaults для этого. Но проблема в том, что Логин не первая страница. Поэтому, если я захожу на страницу, которая требует уникального идентификатора, на ней отображается «unknownkey».

Как я могу обойти эту проблему?

Кроме того, я не могу добавить экран входа в качестве первого экрана, поскольку пользователь может получить доступ к некоторым частям без входа в систему.

Ответы [ 4 ]

1 голос
/ 29 января 2011

попробуйте что-то вроде

if (![[NSUserDefaults standardUserDefaults] objectForKey: @"uniqueid"]) {
   //...user is not logged in..
} else {
  //...user is logged in...
}
0 голосов
/ 12 февраля 2011

В методе viewDidLoad вашего RootViewController вам необходимо проверить сохраненный NSUserDefault с помощью оператора IF. Легко.

-(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.

    }
 }
0 голосов
/ 29 января 2011

Если вход необходим для всего (например, ваше приложение является клиентом dropbox), представьте логин viewController модально при запуске приложения.
И не отклоняйте его, пока у вас не будет успешного входа в систему.

0 голосов
/ 29 января 2011

Я полагаю, что это проблема проектирования, а не проблема программирования?

Возможно, вы могли бы либо переместить экран входа в систему на начальный экран, либо оставить панель вкладок, как есть, пока пользователь не войдет в систему, либо даже изменить дизайн всего этого по-другому.

...