将 UIPickerView 选择设置为 UITableViewCell 内的 UITextField

Posted

技术标签:

【中文标题】将 UIPickerView 选择设置为 UITableViewCell 内的 UITextField【英文标题】:Setting UIPickerView selection to UITextField inside a UITableViewCell 【发布时间】:2011-05-17 23:42:55 【问题描述】:

我在自定义表格视图单元格中有一个 UITextField。在点击文本字段区域时,我会显示一个包含pickerview 的弹出框。我需要将选择器视图中的选择设置为文本字段的文本。我显示了 textDidBeginEditing 方法的弹出框。如何将选择器视图的 didSelect 方法中的选择传递给文本字段?

按照设计,整个事情都在一个 TableViewController 中,实现了 textfield 和 pickerview 委托方法。

谢谢!

【问题讨论】:

【参考方案1】:

只需将 UIPickerView 的委托设置为具有您的 UITableView 的视图控制器。这样,在 UIPickerView 的 didSelect(在 tableview 的 viewcontroller 中实现)上,您只需使用 pickerview 的数据源来填充文本字段。

要从表格视图中获取自定义单元格,您只需执行以下操作:

CustomTableViewCell *thisCell = (CustomTableViewCell*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]];

然后您将其中的文本字段设置为包含您想要的任何文本:

thisCell.textField.text = @"text";

【讨论】:

谢谢伙计!我想知道我是怎么错过这个东西这么久的!只需将那些包含单元格的特定 textField 的 indexPath 存储在 cellForRowAtIndexPath 方法中,并在 pickerView didSelect 方法中按照您的要求将存储的 indexPath 作为参数传递给 (CustomTableViewCell*)[self.tableView cellForRowAtIndexPath:storedIndexPath];【参考方案2】:

您能提供更多信息吗? tableView:cellForRowAtIndexPath: 是什么样的?我很好奇您正在编辑的对象在哪里可用。

我能想到几种方法...

    在文本字段上设置标签并使用它来定位正在编辑的特定文本字段 将 pickerView 的委托设置为 tableCell 并让它处理文本更改

【讨论】:

【参考方案3】:

我认为最好的方法是将 UITextField 的 inputView 属性设置为 UIPickerView。此视图将显示为instead of the keyboard。

当 UITableViewCell 滚动到表格边界之外时,它可能会被释放。因此,存储对调用其 textFieldDidBeginEditing: 委托方法的 UITextField 的引用可能会导致 EXC_BAD_ACCESS 异常。

解决方案是修改单元格的model,它由视图控制器存储在一个数组中。初始化单元格时,应将文本字段的值设置为其模型对象中的相应值。最后,单元格应通过 KVO 观察其模型的变化,并相应地更新文本字段的值。

【讨论】:

以上是关于将 UIPickerView 选择设置为 UITableViewCell 内的 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView - 点击选择

调整 UIPickerView 中选择指示器的高度

如何将 UIPickerView 重置为索引:0,iPhone

在 Swift 中为选定的 UIPickerView 行设置动画背景颜色

未选中的 UIPickerView 值

我将如何设置 UIPickerView? [关闭]