从自定义 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

为啥 Core Data 获取请求从自定义 UITableViewCell 返回空?

从自定义 uitableviewcell 内的按钮点击委托