[英]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
}
您必須找到帶有標簽的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 = ""
}
}
問題是這一行:
let myTekstveld = UITextField()
這將創建一個僅在當前作用域中存在的新局部變量myTekstveld
。 (通常,最里面的花括號將代碼括起來。)您正在創建一個文本字段,將其添加到視圖層次結構中,然后立即將其忽略。
您可能也有一個實例變量myTekstveld
,但是您沒有設置它。 該實例變量可能包含一個DIFFERENT文本字段。
從代碼中刪除let
一詞,它將新創建的文本字段保存到您的實例變量中
在myTekstveld = UITextField()
行的上方添加新行,該行顯示:
print("myTekstveld = \(myTekstveld)")
並查看其在調試控制台中顯示的內容。
如果它記錄了一個文本字段,則您可能應該完全擺脫myTekstveld = UITextField()
行,而只配置現有的文本字段,而不是用新的文本字段替換。
檢查一下:
textfield.text = nil
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.