将UIPickerView选项设置为UITableViewCell中的UITextField

问题描述:

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

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

谢谢!

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

要从实现代码如下得到您的自定义单元格,你只需做:

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

然后,设置文本框在有你想要的文字:

thisCell.textField.text = @"text"; 
+0

谢谢队友!我想知道我这么久错过了这件事情!只需将包含单元格的特定textField的indexPath存储在cellForRowAtIndexPath方法中,并按照pickerView didSelect方法中的要求将存储的indexPath作为参数传递给(CustomTableViewCell *)[self.tableView cellForRowAtIndexPath:storedIndexPath]; – Bourne 2011-05-18 11:39:15

+0

不客气...这是一个巧妙的把戏,我同意:) – Sid 2011-05-18 16:47:08

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

有几个方法我能想到的...

  1. 坐落在文本框(或多个)标签,并用它来找到特定文本框被编辑
  2. 设置委托的pickerView到表格单击并让它处理文本更改

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

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

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