2011-11-15 12 views
0

私はストーリーボードを使って自分のアプリの初期ビューをメインに設定しました。iOS5でストーリーボードを使用してユーザーのログインデータを保存するにはどうすればよいですか?

if (currentUser) { 
    // do stuff with the user 
    //use storybaord nibs 
} else { 
    // show the signup or login screen 
    UIStoryboard *storyboard = self.window.rootViewController.storyboard; 
    self.window.rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"]; 
} 

問題は、私はcurrentUserためのロジックを持っていないです:私はすでにユーザが署名されていない場合は、ログインVCをロードする必要がありアプリデリゲートでこのコードを持っています。それは単なるスエードコードです。どのようにこれを正しく設定できますか?

これは私が実際のログインVCでユーザをログインするために使用するコードです。私はユーザ名/パスをNSUserDefaultsに保存します。

-(IBAction)loginButtonPressed:(id)sender{ 
    ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://myapp.com/20111115/60b88126/login_user/"]]]; 
    [request setPostValue:self.usernameTextField.text forKey:@"username"]; 
    [request setPostValue:self.passwordTextField.text forKey:@"password"]; 
    [request startSynchronous]; 

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:self.usernameTextField.text forKey:@"login"]; 
    [userDefaults setObject:self.passwordTextField.text forKey:@"password"]; 

    NSError *error = [request error]; 
    NSString *responseString = nil; 
    if (!error) { 
     responseString = [request responseString]; 
    } else { 
     responseString = @"Failed to connect to server, please check your WiFi or 3G connection."; 
    } 
    NSDictionary *responseDictionary = [responseString JSONValue]; 
    NSString *loginProblems = [responseDictionary valueForKey:@"login_errors"]; 
    if (![loginProblems isEqualToString:@""]) { 
     //Invalid login 
    } else { 
     [self performSegueWithIdentifier:@"login" sender:self]; 
    } 
} 

答えて

1

NSUserDefaultsにユーザー名/パスワードの値があり、そこから進んでいるかどうかを確認できますか?彼がログアウトしたときにそれらの値をクリアするだけで十分です。

NSUserDefaultsのユーザー名/パスワードフィールドが空の場合は、彼をログインに送ります。それが値を持っているならば、 "やる"。彼がログアウトしたら、値をクリアしますか?

AppDelegateにインスタント変数を作成して、ログインしているかどうかを知らせますか?

InspectAppDelegate *dataCenter = (InspectAppDelegate *) [[UIApplication sharedApplication] delegate]; 

を別のビューコントローラでそれにアクセスするには(あなたがそれを使用して任意の方法でそれを宣言する必要があります):

は、使用普通の通常のインスタンス変数のようなアプリデリゲートに変数を作成します。

関連する問題