在用户输入有四个字符后,如何在Swift 3中调用方法准备?

Sev*_*rin 1 ios segue swift swift3

我有以下方法:

@IBAction func postcodeTextfieldDidChanged(_ sender: UITextField) {

        if (postcodeTextField.text?.characters.count == 4) {
            self.postcode = postcodeTextField.text
            postcodeHas4Chars = true
        } else {
            postcodeHas4Chars = false
        }
    }
Run Code Online (Sandbox Code Playgroud)

而准备方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "CoffeeShopListWithPostcode" {
            if (postcodeHas4Chars == true) {
                if let list = segue.destination as? CoffeeShopListVC {
                    list.postcode = postcode
                } else {
                    print("Data NOT Passed!")
                }
            }
        } else { print("Id doesnt match with Storyboard segue Id")
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码工作,我可以将邮政编码发送到下一个ViewController,但是如何更改代码以在第四次输入后自动调用该方法?此时,用户必须手动退出输入才能执行.

Swe*_*per 5

每次文本字段的文本更改时,请检查文本是否为4个字符.如果是,请致电performSegue(withIdentifier, sender:).简单:

@IBAction func postcodeTextfieldDidChanged(_ sender: UITextField) {

    if (postcodeTextField.text?.characters.count == 4) {
        self.postcode = postcodeTextField.text
        postcodeHas4Chars = true
        performSegue(withIdentifier: "CoffeeShopListWithPostcode", sender: self)
    } else {
        postcodeHas4Chars = false
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,请记住您连接到editingChanged事件而不是valueChanged event.