我以编程方式创建了多个文本字段。正在读取他们的输入,并且在检查了答案之后,正在向用户提出新问题。
但是我似乎无法清除文本字段,以前的输入仍然存在。
我已经尝试添加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
}
答案 0 :(得分:2)
您必须找到带有标签的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 = ""
}
}
答案 1 :(得分:1)
问题是这一行:
let myTekstveld = UITextField()
这将创建一个仅在当前作用域中存在的新局部变量myTekstveld
。 (通常,最里面的花括号将代码括起来。)您正在创建一个文本字段,将其添加到视图层次结构中,然后立即将其忽略。
您可能也有一个实例变量myTekstveld
,但是您没有设置它。该实例变量可能包含一个不同的文本字段。
从代码中删除单词let
,它将新创建的文本字段保存到实例变量
在您的myTekstveld = UITextField()
行上方添加新行,内容为:
print("myTekstveld = \(myTekstveld)")
并查看其在调试控制台中显示的内容。
如果它记录了一个文本字段,您可能应该完全摆脱myTekstveld = UITextField()
行,而只需配置现有的文本字段,而不是用一个新的文本字段来代替。
答案 2 :(得分:-2)
检查此:
textfield.text = nil