从自定义 UITableViewCell 保存数据
Posted
技术标签:
【中文标题】从自定义 UITableViewCell 保存数据【英文标题】:Saving data from custom UITableViewCell 【发布时间】:2011-05-30 07:08:03 【问题描述】:我有一个由一个巨大的 UITableView 组成的编辑屏幕。
表格中的每个单元格都是一个自定义的UITableViewCell
,其中包含一个UITextField
我能够加载表格、滚动并输入信息。但是,在滚动表格单元格时,输入的数据会丢失,我明白为什么会发生这种情况。
我意识到我需要在用户使用textFieldDidEndEditing
方法完成输入数据后立即保存数据。
问题:我想将输入的数据存储在ViewController
中可用的自定义对象中 - 我如何从UITableViewCell
访问它?另外,如何识别表格单元格的行和位置,以便根据位置填充对象中的特定属性
问题:我这样做是否正确?或者有更好的方法吗?
【问题讨论】:
你是如何创建单元格的?它是自定义子类还是您将其作为子视图添加到UITableViewCell
对象?
我正在视图控制器中以编程方式创建这些自定义表格单元
【参考方案1】:
由于您只提到了一个文本字段,我们可以使用一个包含每个单元格字符串的 NSMutableArray 对象。您必须用空字符串填充数组并使用此信息填充文本字段。会是这样的,
textField.text = [textFieldStrings objectAtIndex:indexPath.row];
由于您是在视图控制器中以编程方式执行此操作,因此您必须将视图控制器设置为您的文本视图委托。你可以这样做
- (void)textFieldDidEndEditing:(UITextField *)textField
UITableViewCell *cell = (UITableViewCell*)textField.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
... Since you've the index path, you can map it to an array.
[textFieldStrings replaceObjectAtIndexPath:indexPath withObject:textField.text];
这将是基本思想。从一个可变的空字符串数组开始,并在每次更新文本字段时通过用新文本替换原始文本来修改它们。希望这会有所帮助。
【讨论】:
我用过这个,但我总是得到 0 作为 indexPath.row!我不知道我做错了什么。以上是关于从自定义 UITableViewCell 保存数据的主要内容,如果未能解决你的问题,请参考以下文章
编辑完成后如何从自定义uitableviewcell的文本字段向数组添加数据
如何从自定义 UITableViewCell 获取值到 ViewController?
如何从自定义 UITableViewCell 触发 segue - iOS7
未从自定义 uitableviewcell 调用 prepareForSegue