如何从动态创建的UITextField中获取文本而无需触摸或点击文本字段(禁用用户交互)?

时间:2018-07-03 13:43:44

标签: ios swift dynamic uitextfield

在我的应用程序中,我基于服务器响应在for循环中动态创建了文本字段,我设计了每一行有五个文本字段。在这里,我将textfield1值和textfield2值相乘,然后显示在textfield4中,然后将textfield1和textfield3乘以然后在textfield5中显示,因此在这里,我基于占位符文本禁用了textfield4和textfield5的用户交互,因为我只想显示该文本字段的值,并设置不可编辑的字段。

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

enter image description here

在填写一些值后,我在此处附上了屏幕截图:

enter image description here

在这里,我的问题由于禁用用户交互而无法获取textfield4和textfield5值。如果启用用户交互功能,则可以在 textFieldShouldEndEditing 中获得两个文本字段值。

如何获取textfield4和textfield5的值?

3 个答案:

答案 0 :(得分:0)

您可以为textfield设置标签,并使用该标签获取textfield。请参考下面的示例代码。

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

答案 1 :(得分:0)

对我来说,最简单的解决方案是拥有一个var,您可以在设置textfield4和5文本的同时使用计算出的textfields值进行设置。如果您希望收到通知,则可以为其值添加观察者。

答案 2 :(得分:0)

一种更好的方法是将所有内容放置在UITableView中,该对象由一组对象填充,我们将其命名为Item。每个Item可以具有诸如namequantitysquareFootPerUnitestCosttotalSquareFoottotalCost之类的属性。

然后,我将创建一个具有三个UITextField(quantityestCostsquareFootPerUnit)和三个标签(name,{{1})的UITableViewCell }和totalSquareFoot)。使您的totalCost符合UITableViewCell,以捕获用户的输入。

UITextFieldDelegate中,用tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)对象中的数据填充UITableViewCells。从Item捕获quantityestCostsquareFootPerUnit数据后,进行计算并将答案分配给UITextFields和{{1} } totalSquareFoot对象中的}属性,然后重新加载表格。

有多种方法可以将您的计算值分配给totalCost对象。我通常使用的方式是将Item上的一个闭包(Swift)/块(Objective-C)作为属性,然后在计算完成后立即调用它。将计算出的答案作为参数传递。

UITableView的优势

  1. 如果服务器返回多个Item数据,则无需处理任何复杂的x和y坐标定位。
  2. 使用对象更容易维护您的UITableViewCell数据。
  3. 无需在视图上使用Item对象或保留Item名称。