我注册了 viewController(VC)。一旦用户提交了他的注册详细信息,我的远程服务器就会响应“registration_success”。收到此消息后,我可以提供一个新的 VC,请求用户检查他们的电子邮件以验证他们的电子邮件地址。我能够展示新的 View Controller ,但无法将用户的电子邮件地址转移到新的 VC。我的代码如下:
guard
let registeredEmail = myArray["email"] as? String else{
print("cannot find email address")
return
}
let verifyEmailVC = self.storyboard?.instantiateViewController(withIdentifier: "emailConfirmVC") as! VerifyEmailViewController
print("registeredEmail: \(registeredEmail)")
verifyEmailVC.emailToVerify.text! = registeredEmail
self.present(verifyEmailVC, animated: true, completion: nil)
VerifyEmailViewController 类:
class VerifyEmailViewController: UIViewController {
@IBOutlet var emailToVerify: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
控制台:
jsonObject: {
email = "tran123@gmail.com";
firstname = Wang;
lastname = tran;
message = "registration_success";
status = 200;
userId = 53;
}
message: registration_success
registeredEmail: tran123@gmail.com
我收到以下错误:
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
行内:verifyEmailVC.emailToVerify.text! =注册邮箱
最佳答案
VerifyViewController 中的标签为 nil,您正在尝试为该标签设置值。尝试像这样将字符串传递给您的 Controller
let verifyEmailVC = self.storyboard?.instantiateViewController(withIdentifier: "emailConfirmVC") as! VerifyEmailViewController
print("registeredEmail: \(registeredEmail)")
verifyEmailVC.email = registeredEmail
self.present(verifyEmailVC, animated: true, completion: nil)
class VerifyEmailViewController: UIViewController {
@IBOutlet var emailToVerify: UILabel!
var email: String?
override func viewDidLoad() {
super.viewDidLoad()
emailToVerify.text = email
}
关于ios - 在没有 Segues 的 ViewController 之间传输数据 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435546/