如何读取/存储所有文本字段的值(文本字段在uitableview的单元格中)?

时间:2011-02-13 18:25:29

标签: iphone uitableview

每次在tableview的单元格中使用textfield时,我都有一个动态创建的表。 我可以在tableviewcell的子类中的textfield中一次读取值:

-  (void)textFieldDidEndEditing:(UITextField *)textField {

NSLog(@"Text :%@ ",textField.text);
 }

但我想存储在所有文本字段中输入的所有值...我该如何处理?我知道我可以使用for循环,但我无法获得for循环

中的条件(它应该运行多长时间)

2 个答案:

答案 0 :(得分:1)

永远不要在视图中存储数据。在这种情况下,UITableViewCell就是您的视图。当您将单元格移出屏幕时,它(希望)会重复使用,文本将会消失。

将数据保存回textFieldDidEndEditing:

中的数据模型
- (void)textFieldDidEndEditing:(UITextField *)textField {
    //                                          | cell.contentView  |
    UITableViewCell *cell = (UITableViewCell *)[[textField superView] superView];
    NSIndexPath *indexPath = [tableView indexPathForCell:cell];
    MyObject *mydataObject = [self myObjectAtIndexPath:indexPath];
    mydataObject.text = textField.text;
}

无法在UITableView中循环遍历所有(我了解visibleCells)单元格。因为如果屏幕上只有单元格1到5,则项目10没有单元格。如果你已经向下滚动到单元格10,则单元格1不再存在。

答案 1 :(得分:0)

执行此操作的一种方法是使用包含在其中的单元格的索引标记每个文本字段。

您可以使用每个单元格的字符串创建NSMutableArray,并在textFieldDidEndEditing函数上从文本字段中提取标记,并将新字符串放在相应的数组索引中。

确保清除文本字段并在重复使用单元格时重置标记。