将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";
你能提供更多的信息吗? tableView:cellForRowAtIndexPath:
是什么样的?我很好奇你正在编辑的对象在哪里可用。
有几个方法我能想到的...
- 坐落在文本框(或多个)标签,并用它来找到特定文本框被编辑
- 设置委托的pickerView到表格单击并让它处理文本更改
我认为最好的办法是将UITextField的inputView
属性设置为UIPickerView。此视图将显示instead of the keyboard。
当一个UITableViewCell滚动到一个表的边界之外时,它可能会被解除分配。因此,存储对调用其textFieldDidBeginEditing:
委托方法的UITextField的引用可能会导致EXC_BAD_ACCESS
异常。
解决方法是修改单元的模型,它由视图控制器存储在一个数组中。当单元格初始化时,它应该将文本字段的值设置为其模型对象中的对应值。最后,单元格应通过KVO观察其模型的更改并相应地更新文本字段的值。
谢谢队友!我想知道我这么久错过了这件事情!只需将包含单元格的特定textField的indexPath存储在cellForRowAtIndexPath方法中,并按照pickerView didSelect方法中的要求将存储的indexPath作为参数传递给(CustomTableViewCell *)[self.tableView cellForRowAtIndexPath:storedIndexPath]; – Bourne 2011-05-18 11:39:15
不客气...这是一个巧妙的把戏,我同意:) – Sid 2011-05-18 16:47:08