我有两个文本框,passwordTextField
和emailTextField
。将值输入到每个值中。当我点击print时,值将在控制台中打印。
但是,在使用next函数在next view controller上填充文本框时,出现以下错误。
注意:
这不是在几个小时前起作用的,并且我什么也没做任何更改,所以我不确定现在如何或为什么不起作用。
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var registerButton: UIButton!
@IBAction func registerButtonPressed(_ sender: Any) {
let next = self.storyboard?.instantiateViewController(withIdentifier: "ABC") as! ABCViewController
self.present(next, animated: true,completion: nil)
let nameText = self.emailTextField.text!
let passwordText = self.passwordTextField.text!
print(nameText) // prints email
print(passwordText) // prints password
next.username.text = nameText // prints error: Unexpectedly found nil while implicitly unwrapping an Optional value
next.password.text = passwordText
}
Run Code Online (Sandbox Code Playgroud)
意外找到nil,同时隐式展开Optional值。
但是在打印时显示非零值。
该代码不可靠,因为不能保证在该present
行之后立即加载第二个控制器中的视图。
所有插座均可用,nil
直到视图可用为止。
在中声明临时属性ABCViewController
并在viewDidLoad中填充文本字段
class ABCViewController : UIViewController {
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
var tempName = ""
var tempPassword = ""
// .....
func viewDidLoad() {
super.viewDidLoad()
username.text = self.tempName
password.text = self.tempPassword
}
}
Run Code Online (Sandbox Code Playgroud)
在registerButtonPressed
将值分配给临时属性并显示控制器时,别无其他。
@IBAction func registerButtonPressed(_ sender: Any) {
let next = self.storyboard?.instantiateViewController(withIdentifier: "ABC") as! ABCViewController
next.tempName = self.emailTextField.text!
next.tempPassword = self.passwordTextField.text!
self.present(next, animated: true,completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
76 次 |
最近记录: |