簡體   English   中英

如何在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
    }

您必須找到帶有標簽的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM