繁体   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