请检查以下代码:
@IBAction func sendActivationCode(_ sender: UIButton) {
service.Register(phoneNumber: self.mobileNumberTxt.text!, callback: { (response) in
self.setCustomerValues(response: response)
})
}
func setCustomerValues(response: [String:Any]) {
registrationToken = (response["token"]! as! String)
code = response["code"] as! Int
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toStep2" {
let vc = segue.destination as! Step2ViewController
vc.registrationToken = registrationToken
}
}
问题是:prepare函数在setCustomerValues
之前执行,并且我无法在Step2ViewController.swift
中使用registrationToken
变量> 因为它是零。
最佳答案
不要将 Segue 从按钮连接到 Step2ViewController,而是从 View Controller 连接。这样,当触摸按钮时,segue 就不会自动执行。
然后从 setCustomerValues 回调中调用 PerformSegue,以在获取注册 token 后显式执行 segue。请注意,如果回调不在主线程上,则需要在调用performSegue 之前将dispatch_async 到主线程。
关于ios - Swift - 将来自 API 的数据传递到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374069/