我是iOS中的新手。我想要的是當用戶成功註冊後,下一個視圖控制器應該出現。我爲此使用的是prepareForSegue。用戶正在成功登錄。調試顯示prepareForSegue也被調用,但它不顯示下一個屏幕。我也想發送我的「用戶」變量以及segue。這是我的代碼。從按鈕的操作方法調用PrepareForSegue時不工作(Swift)
@IBAction func signUpTapped(_ sender: AnyObject!) {
let password = "password"
phone?.name = "phone_number"
phone?.value = "######"
email?.name = "email"
email?.value = "######"
attributes.append(phone!)
attributes.append(email!)
let userPool = appDelegate.userPool;
userPool?.signUp("user7", password: password, userAttributes: attributes, validationData: nil).continueWith { (task) -> Any? in
print("Successfully registered user: \(task.result!.user)");
print("error: \(task.error)");
self.user = task.result!.user
self.performSegue(withIdentifier: "toConfirmationCodeScreen", sender: self)
return nil
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "toConfirmationCodeScreen") {
let secondViewController = segue.destination as! ConfirmationCodeViewController
let user = sender as! AWSCognitoIdentityUser
secondViewController.user = self.user
}
}
任何幫助將不勝感激。
詩 我使用的斯威夫特3,Xcode中8
https://stackoverflow.com/a/41887007/5461400 @kinza –
身份驗證方法可能異步運行,所以你需要使用'DispatchQueue.main.async {主線程中調用self.performSegue \\您的代碼執行segue} –
@kinza您已經編寫了'self.performSegue(withIdentifier:sender)'方法來實現按鈕點擊操作。在這種情況下,您需要創建從第一個viewcontroller到第二個viewcontroller的segue,而不是從按鈕到第二個viewcontroller。 –