【发布时间】:2019-07-08 23:30:57
【问题描述】:
当用户在 ViewController 中将两个文本字段(passName 和 passPhone)作为 textField.text 输入后,我尝试将它们传递给我的第三个视图控制器,因为我需要它来引用 firebase 数据库子名称,但每次我运行它给我一个零返回值?我不明白为什么值不通过
performSegue 应该将 textfield.text 传递给下一个视图控制器,因为在 override func prepare 中我设置了它
错误代码:(在代码中查找位置)
线程 1:致命错误:在隐式展开可选值时意外发现 nil
// 视图控制器
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var numberField: UITextField!
@IBAction func linkTapped(_ sender: Any) {
if (nameField.text != nil && numberField.text != nil) {
if error != nil {
//code
} else {
self.performSegue(withIdentifier: "code", sender: self)
}
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = verificationCodeViewController()
vc.passName = self.nameField.text
vc.passPhone = self.numberField.text
nameField.endEditing(true)
numberField.endEditing(true)
}
// 验证CodeViewController
var passName: String!
var passPhone: String!
@IBAction func Login(_ sender: Any) {
if (code.text! != "") {
let defaults = UserDefaults.standard
let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID: defaults.string(forKey: "authVID")!, verificationCode: code.text!)
Auth.auth().signIn(with: credential) { (user, error) in
if error != nil {
print("error: \(String(describing: error?.localizedDescription))")
} else {
print("Phone Number: \(String(describing: user?.user.phoneNumber))")
let userInfo = user?.user.providerData[0]
print("Provider ID: \(String(describing: userInfo?.providerID))")
self.performSegue(withIdentifier: "logged", sender: Any?.self)
}
}
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = RankedClubScreen()
vc.passName = self.passName
vc.passPhone = self.passPhone
}
// RankedClubScreen -- ViewController
var passName: String!
var passPhone: String!
@IBAction func signOutFunction(_ sender: Any) {
do {
try Auth.auth().signOut()
let ref = Database.database().reference().child("Online Users")
print(self.passName + self.passPhone) // Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
ref.child(self.passName + self.passPhone).removeValue()
self.view.window!.rootViewController?.dismiss(animated: true, completion: nil)
} catch let error {
print("not signed in...", error)
}
}
【问题讨论】:
标签: ios swift xcode firebase segue