2011-11-15 22 views
0

我已經將故事板的應用程序的初始視圖設置爲主視圖。我在應用程序委託該代碼,如果用戶沒有在已經簽署的應該加載登錄VC:如何在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。這只是suedo代碼。我如何正確設置它?

這是我在實際登錄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]; 

訪問它在不同的視圖控制器(需要聲明它在你使用的任何方法)。

相關問題