我正在使用通過登錄視圖記錄用戶的iOS應用程序。如何在解除Swift中的控制器視圖時傳輸數據
有兩個控制器:LognViewController和SignUpViewController 如果新用戶註冊,那麼註冊視圖控制器將發起API調用以檢索新的用戶帳戶。然後,註冊頁面應該將新的用戶對象轉回到登錄頁面,登錄頁面又將用戶登錄到主應用程序。
基於a previous post我喜歡關閉的想法,我試圖在這裏實現它;然而,我得到了關閉函數變量的零。我的代碼是這樣的:
在第一個控制器:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "userSignUp" {
if !self.userTextField.text!.isEmpty {
let nav = segue.destinationViewController as! UINavigationController
let vc = nav.topViewController as! SignUpViewController
vc.email = self.userTextField.text!
vc.submitUser = signUpToLogIn
}
}
}
// asynchronous get user back from sign up
func signUpToLogIn(currentUser: User) {
self.currentUser = currentUser
self.checkCurrentUser()
}
在第二控制器:
var submitUser: ((currentUser: User) ->())!
@IBAction func signUpButtonTapped(sender: UIButton) {
doSignUp({(u: User?) ->() in
if u != nil {
self.submitUser(currentUser: u!)
self.dismissViewControllerAnimated(false, completion: nil)
}
})
}
我期待在調試器,和它說致命錯誤:意外在展開可選值時發現nil當我使用斷點時,可以在變量部分看到submitUser變量始終爲零。
現在有沒有不同的方式來做到這一點?
前時用戶正在使用您的應用程序,他們是否通過從LoginViewController繼續訪問SignUpViewController?如果是的話,這聽起來像你想要傳回數據到LoginViewController。我會使用委託來做到這一點。你也可以看看使用放鬆segue – chickenparm