将UIPickerView选择设置为UITableViewCell内的UITextField

时间:2011-05-17 23:42:56

标签: iphone uitableview uitextfield uipickerview uipopovercontroller

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

通过设计,整个事情都在TableViewController中,并实现了textfield和pickerview委托方法。

谢谢!

3 个答案:

答案 0 :(得分:0)

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

我可以想到几种方法......

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

答案 1 :(得分:0)

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

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

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

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

thisCell.textField.text = @"text";

答案 2 :(得分:0)

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

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

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