如何清除 Swift 中的 UITextFields?

How to clear UITextFields in Swift?

我以编程方式创建了多个文本字段。正在阅读他们的输入,并在检查答案后向用户提出一个新问题。 但我似乎无法清除文本字段,之前的输入仍然存在。 我已经尝试添加 textfield.text = "" 但它似乎不起作用。也许我应该以某种方式删除带有正确标签的文本字段,但我不知道该怎么做。有人对这种情况有什么建议吗?

var a = 0
while a < aantalNoten {
    let myTekstveld = UITextField()
    if (view.viewWithTag(a+1) as? UITextField) != nil {
        myTekstveld.text = ""
        }
        else {
            myTekstveld.frame = CGRect(x: labelX, y: labelY + 100, width: labelWidth, height: labelHeight / 2)
            myTekstveld.backgroundColor = UIColor.white
            myTekstveld.textAlignment = .center
            myTekstveld.placeholder = "?"
            myTekstveld.keyboardType = UIKeyboardType.default
            myTekstveld.borderStyle = UITextField.BorderStyle.line
            myTekstveld.autocorrectionType = .no
            myTekstveld.returnKeyType = UIReturnKeyType.done
            myTekstveld.clearButtonMode = UITextField.ViewMode.whileEditing
            myTekstveld.textColor = UIColor.init(displayP3Red: CGFloat(96.0/255.0), green: CGFloat(35.0/255.0), blue: CGFloat(123.0/255.0), alpha: 1)
            myTekstveld.delegate = self as? UITextFieldDelegate
            myTekstveld.tag = a + 1
            view.addSubview(myTekstveld)
        }
        a += 1
        labelX += labelWidth
    }

问题出在这一行:

let myTekstveld = UITextField()

这会创建一个新的局部变量 myTekstveld,它只存在于当前作用域中。 (通常是包含代码的最里面的一组大括号。)您正在创建一个文本字段,将其添加到您的视图层次结构中,然后立即忘记它。

您可能也有一个实例变量 myTekstveld,但您没有设置它。该实例变量可能包含不同的文本字段。

从您的代码中删除单词 let,它会将您新创建的文本字段保存到您的实例变量中

myTekstveld = UITextField() 行上方添加一个新行,上面写着:

print("myTekstveld = \(myTekstveld)") 

并查看它向调试控制台显示的内容。

如果它记录一个文本字段,您可能应该完全删除 myTekstveld = UITextField() 行,只配置现有的文本字段,而不是用新的文本字段替换文本字段。

您必须找到带标签的 textfield。这里view是超级最多的观点。遍历所有子视图并找到您的 textField.

for view in self.view.subviews {
   //Get One By One with Tag
   if let txtField1 = self.view.viewWithTag(tagOfTextField) as? UITextField {
       txtField1.text = ""
   }
}

或者您可以清除所有 textfields

for view in self.view.subviews {
    //Get All Values
    if let textField = view as? UITextField {
        textField.text = ""
    }
}

检查这个:

  textfield.text = nil