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

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

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

谢谢!

【问题讨论】:

    标签: iphone uitableview uitextfield uipickerview uipopovercontroller


    【解决方案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: 是什么样的?我很好奇您正在编辑的对象在哪里可用。

    我能想到几种方法...

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 2011-08-01
        相关资源
        最近更新 更多