在Swift中将UITextField转换为String

时间:2017-06-27 14:37:29

标签: swift

我尝试将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)

}

2 个答案:

答案 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