2015-05-10 56 views
0

所以後端正在工作,我可以成功創建帳戶和登錄。現在我想讓他們轉換到主屏幕,所以我如何設置,以便如果sigup /登錄成功轉換?這是我的代碼:如何在註冊和登錄後切換視圖?

- (IBAction)signUp:(UIButton *)sender { 


NSString *name  = _textUsername.text; 
NSString *password = _textPassword.text; 
NSString *email  = [_textEmail.text lowercaseString]; 
//--------------------------------------------------------------------------------------------------------------------------------------------- 
if ([name length] == 0)  { [ProgressHUD showError:@"Name must be set."]; return; } 
if ([password length] == 0) { [ProgressHUD showError:@"Password must be set."]; return; } 
if ([email length] == 0) { [ProgressHUD showError:@"Email must be set."]; return; } 
//--------------------------------------------------------------------------------------------------------------------------------------------- 
[ProgressHUD show:@"Please wait..." Interaction:NO]; 

PFUser *user = [PFUser user]; 
user.username = name; 
user.password = password; 
user.email = email; 
user[PF_USER_EMAILCOPY] = email; 
user[PF_USER_FULLNAME] = name; 
user[PF_USER_FULLNAME_LOWER] = [name lowercaseString]; 
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
{ 
    if (error == nil) 
    { 
     ParsePushUserAssign(); 
     [ProgressHUD showSuccess:@"Succeed."]; 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
    else [ProgressHUD showError:error.userInfo[@"error"]]; 
}]; 

還有什麼想法爲什麼我的文本字段不會自動進入下一個?很確定代碼是正確的。謝謝。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

    { 
    if (textField == _textUsername) 
{ 

    [textField resignFirstResponder]; 
    [_textEmail becomeFirstResponder]; 
} 

else if (textField == _textEmail) 
{ 
    [textField resignFirstResponder]; 
    [_textPassword becomeFirstResponder]; 
} 

else if (textField == _textPassword) 
{ 
    [textField becomeFirstResponder]; 
    [_textBirthday becomeFirstResponder]; 
} 

else if (textField == _textBirthday) 
{ 
[self actionRegister]; 
} 

return YES; 
+0

如何使用僅包含dismissViewController的單線程替換註冊:方法。你可能會解開這個問題。 – danh

+0

@danh視圖控制器已被解僱,我想在成功註冊/登錄後轉換到另一個。 – George

+0

我明白了。在這種情況下,請發佈檢測到沒有用戶的情況並提交註冊/登錄的代碼。 (並刪除發佈的代碼,除了解僱之外沒有任何其他的代碼)。 – danh

回答

0

我安排我的parse.com應用程序的方式是有主VC,即該應用是否會一貫的業務登錄的用戶之一,是故事板的首發VC。這是viewDidAppear中的第一份工作,是檢查PFUser currentUser是否存在(並且如果您的應用程序需要它,則會登錄)。如果不是,那麼只有這樣,纔會呈現登錄/註冊VC。

當您在發佈的代碼中登錄/註冊退出時,主VC中的viewWillAppear會再次觸發並檢測準備就緒狀態。這種情況下的操作是對登錄的用戶進行初始化。

編輯 - 例如,我有一個應用程序,其中主VC是故事板中的起始VC。它有一個標識符== @「GetUser」,從它抽取到我的等價註冊/登錄VC。

下面是我的主要VC(稍微簡化)viewDidAppear

- (void)viewDidAppear:(BOOL)animated { 

    [super viewDidAppear:animated]; 

    // I require only a non-nil currentUser to run the app. Your check 
    // might be more elaborate... 
    PFUser *user = [PFUser currentUser]; 
    if (user) { 
     // put up a "busy" UI. In my app, it's just a view with UIActivityIndicator 
     // update the user so we know its current 
     [user fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { 
      // remove the "busy" UI 
      [self startTheApp]; 
     }]; 
    } else { 
     [self performSegueWithIdentifier:@"GetUser" sender:self]; 
    } 
} 

-(void)startTheApp { 
    // fetch data from parse.com and reload the table view that's the 
    // centerpiece of the UI for this VC. 
} 

的好處在這裏的行爲是在登錄/註冊成功,currentUser是非零,所以當登錄/註冊VC被駁回,viewDidAppear如上圖所示再次解僱了,因爲主要的VC下面是被再次顯示。在第二次通過時,當前用戶通過開始條件,我們去startTheApp

+0

有任何示例代碼?謝謝。 – George

+0

當然。請參閱編輯。你的問題中有趣的部分主要與ING視圖控制器中的代碼有關,並且幾乎不涉及你在問題中的當前ED視圖控制器。 – danh

+0

謝謝,沒有錯誤,但似乎沒有任何事情發生。這是在主視圖控制器(用戶會看到登錄) - http://i.imgur.com/1gUXxsQ.png – George