簡體   English   中英

如何從動態創建的UITextField中獲取文本而無需觸摸或點擊文本字段(禁用用戶交互)?

[英]How to get text from dynamically created UITextField without touching or tapping the text field (disabled user interaction)?

在我的應用程序中,我基於服務器響應在for循環中動態創建了文本字段,我設計了每一行有五個文本字段。 在這里,我將textfield1值和textfield2值相乘,然后顯示在textfield4中,然后將textfield1和textfield3乘以然后在textfield5中顯示,因此在這里,我基於占位符文本禁用了textfield4和textfield5的用戶交互,因為我只想顯示該文本字段的值,並設置不可編輯的字段。

在這里,我附上了此功能的空白字段屏幕截圖:

在此處輸入圖片說明

在這里,我在填寫了一些值后附上了屏幕截圖:

在此處輸入圖片說明

在這里我的問題是由於禁用用戶交互而無法獲取textfield4和textfield5值。 如果啟用用戶交互功能,則可以在textFieldShouldEndEditing中獲得兩個文本值。

如何獲取textfield4和textfield5的值?

您可以為textfield設置標簽,並使用該標簽獲取textfield 請參考以下示例代碼。

if let txtField = self.view.viewWithTag(123) as? UITextField {
    print("txtField.text")
}

對我來說,最簡單的解決方案是擁有一個var,您同時設置textfield4和5文本時使用計算的textfields值進行設置。 如果您希望獲得通知,則可以為其值添加觀察者。

更好的方法是將所有內容布置在由一組對象填充的UITableView內,我們將其命名為Item 每個Item都可以具有屬性,例如namequantitysquareFootPerUnitestCosttotalSquareFoottotalCost

然后,我將創建一個具有三個可以編輯的UITextFields( quantityestCostsquareFootPerUnit )和三個標簽( nametotalSquareFoottotalCost )的totalCost 使您的UITableViewCell符合UITextFieldDelegate以捕獲來自用戶的輸入。

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ,使用Item對象中的數據填充UITableViewCells UITextFields捕獲了quantityestCostsquareFootPerUnit數據后,進行計算並將答案分配給Item對象中的totalSquareFoottotalCost屬性,然后重新加載表格。

有多種方法可以將計算所得的值分配給Item對象。 我通常使用的方法是將一個閉包(Swift)/塊(Objective-C)作為UITableViewCell上的一個屬性,然后在計算完成后立即調用它。 將計算出的答案作為參數傳遞。

UITableView的優點

  1. 如果服務器返回多個Item數據,則無需處理任何復雜的x和y坐標定位。
  2. 使用對象更容易維護您的Item數據。
  3. 無需在視圖上使用tag對象或保留tag名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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