目前,我正在以编程方式在<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>
内创建UITextField
和UIPickerView
。如果我将cellForRowAt
与UIPickerView
相关联,我可以轻松更新didSelectRow
中选定的UITextField
值。
但是,我要求使用应用的AutoLayout约束以编程方式创建IBOutlet
。
但是,我不知道如何更新UITextField
,因为我在UITextField
UIPickerView's
函数中没有引用它,因为它是在didSelectRow
内以编程方式创建的这样:
cellForRowAt
答案 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
}
}
}
}