[英]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
都可以具有属性,例如name
, quantity
, squareFootPerUnit
, estCost
, totalSquareFoot
和totalCost
。
然后,我将创建一个具有三个可以编辑的UITextFields( quantity
, estCost
, squareFootPerUnit
)和三个标签( name
, totalSquareFoot
和totalCost
)的totalCost
。 使您的UITableViewCell
符合UITextFieldDelegate
以捕获来自用户的输入。
在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
,使用Item
对象中的数据填充UITableViewCells
。 从UITextFields
捕获了quantity
, estCost
, squareFootPerUnit
数据后,进行计算并将答案分配给Item
对象中的totalSquareFoot
和totalCost
属性,然后重新加载表格。
有多种方法可以将计算所得的值分配给Item
对象。 我通常使用的方法是将一个闭包(Swift)/块(Objective-C)作为UITableViewCell
上的一个属性,然后在计算完成后立即调用它。 将计算出的答案作为参数传递。
UITableView的优点
Item
数据,则无需处理任何复杂的x和y坐标定位。 Item
数据。 tag
对象或保留tag
名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.