如何从UIPickerView接收输入时更新UITextField?

时间:2017-03-29 07:45:54

标签: ios swift swift3 uitextfield uipickerview

目前,我正在以编程方式在<form> <table> <tr> <!--starting time is enter by user--> <th>Start Time:</th> <td><input type="time" name="startTime"></td> </tr> <tr> <!--interval is select by user--> <th>Interval:</th> <td> <select name="interval" > <option value="30 minutes">30 minutes</option> <option value="1 hours">1 hours</option> </select> </td> </tr> <tr> <th>End Time:</th> <td> <!-- show end time here and data should be readonly(not editable) --> </td> </tr> </table> </form> 内创建UITextFieldUIPickerView。如果我将cellForRowAtUIPickerView相关联,我可以轻松更新didSelectRow中选定的UITextField值。

但是,我要求使用应用的AutoLayout约束以编程方式创建IBOutlet

但是,我不知道如何更新UITextField,因为我在UITextField UIPickerView's函数中没有引用它,因为它是在didSelectRow内以编程方式创建的这样:

cellForRowAt

1 个答案:

答案 0 :(得分:1)

您可以获取相应索引路径的单元格,并在该单元格中找到该文本字段。您有2个选项可用于查找textField。一个是使用标签,以防你在那个单元格中有多个UITextField,你不会这样做。所以你可以这样做:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
  {
    // choose the correct row. I've assumed you only have one row.
    if let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 2)) {
      for subview in cell.subviews {
        if let textField = subview as? UITextField {
          textField.text = testing[row]
          break
        }
      }
    }
  }