我尝试将UITextField对象转换为String,以便将其传递给模型文件中的函数。但即使我在名称输入文本字段中键入一些字符然后在其外部单击,它也会打印一个空白。为什么没有存储在那里?
在视图控制器文件中:
@IBOutlet weak var nameInputText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameInputText.delegate = self
let text: String = nameInputText.text!
print(text) //this prints a blank
model.validateName(nametext: text)
}
答案 0 :(得分:2)
应该如下所示
@IBOutlet weak var usernameInputText : UITextField!
override func viewDidLoad() {
super.viewDidLoad()
usernameInputText.delegate = self
}
func ClickOnButton()
{
let text: String = usernameInputText.text!
print(text) //this prints My text
model.validateName(nametext: text)
}
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String)
-> Bool
{
let text: String = usernameInputText.text!
print(text) //this prints My text
model.validateName(nametext: text)
}
答案 1 :(得分:0)
if odgovor in city.keys() and city[odgovor] == country:
被称为之前您的viewDidLoad
对用户可见,因此任何文本字段只能包含文本(如果您之前已设置该文本)(在InterfaceBuilder中或码)。如果要从该文本字段访问用户输入,您应该在ViewController
中执行该操作,或者在您知道只能在用户交互发生后调用的任何其他功能中执行此操作。
textFieldDidEndEditing