!我一直在这个问题上停留了2天。这是我的场景。从完成块传递数据到视图控制器swift 3
用户单击登录按钮,如果电子邮件地址和密码存储在UserDefaults
中,则该应用将自动登录该用户,首先在从服务器检索用户数据时呈现UIAlertController
。一旦数据返回到应用程序,完成处理程序将分配本地属性var User: [String: AnyObject]
结果。在这一点上,我可以print(self.User)
,并正确分配数据。都好。当我尝试将此数据传递给我通过present
呈现的下一个控制器时,会出现问题。这里是我的代码:
LoginViewController.swift
-----
dismiss(animated:true, completion: {
let tenantViewController = storyboard.instantiateViewController(withIdentifier :"tenantDashboardViewController") as! TenantDashboardViewController
tenantViewController.User = user
print(tenantViewController.User) //Works
self.present(tenantViewController, animated: true)
})
这里是我的目的地视图 - 控制提前
import Foundation
import SideMenuController
class TenantDashboardViewController: SideMenuController {
var User: [String: AnyObject]?
override func viewDidLoad() {
super.viewDidLoad()
performSegue(withIdentifier: "showTenantDashboardHomeViewController", sender: nil)
performSegue(withIdentifier: "containTenantSideMenu", sender: nil)
print(self.User!) //Always returns nil, crashes app
}
}
谢谢!
尝试在'func prepare(for segue:UIStoryboardSegue,sender:Any?)'中传递数据''。 – triandicAnt
另请注意:您不应该在'UserDefaults'中存储敏感用户数据,如密码。使用钥匙串。 –
@MattSeaman谢谢。我去做。 –