无法传递文本字段值

问题描述 投票:0回答:1

我正在尝试使用委托将文本字段中的值传递给另一个视图。这就是我试图实现的方法。

在将值传递到主视图的第二个视图中,这是我写的。。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if let _ = raDelegate {
        raDelegate?.durationChanged(hrs: string)
    }
    return true
}

在第一个视图中,这就是我所拥有的...

 func durationChanged(hrs: String) {

        myView.durationTextField.text = hrs
  }

[现在的问题是,如果我在文本字段中输入[5],在durationChanged函数中,在应用断点时,我在hrs中得到的值本身就是“ 5”。但是,当我删除断点并运行时,最后打印到myView.durationTextField.text的是55。另外,如果我在此之后打印“ 7”,则“ 55”将被替换为“ 77”。理想情况下,我应该得到的是“ 57”。

ios swift uitextfield
1个回答
0
投票

您使用错误。shouldChangeCharactersIn函数上的字符串不是textField的值。

例如: 1. textField.text =“” 2.输入5->范围为(0,0),字符串为5,textField.text =“”(textField.text尚未更改,取决于委托函数的返回值,如果为true,它将替换range中带有字符串的textField.text) 3.输入7->范围是(1,0),字符串是7,textField.text =“ 5” 4.输入退格键->范围是(2,1),字符串是“”,textField =“ 57”

4之后,您的textField.text =“ 5”

所以您可以修改代码:

let stringAfterChanged = ((textField.text ?? "") as NSString).replacingCharacters(in: range, with: string)
raDelegate?.durationChanged(hrs: stringAfterChanged)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.