Objective c 使用tableviewcell UITextfield中的输入构建数组

Objective c 使用tableviewcell UITextfield中的输入构建数组,objective-c,ios,xcode,Objective C,Ios,Xcode,我有一个具有动态单元格数量的tableview,它基于由JSON构建的数组 tableData = [NSJSONSerialization JSONObjectWithData:dataWebService options:kNilOptions error:&error]; 这一小行获取了构建tableview所需的所有数据 在tableview中,每个单元格中都有一个文本字段,其中包含来自JSON的预定义文本。用户可以在继续下一阶段(情节提要)之前更改此值 问题是,在将此arra

我有一个具有动态单元格数量的tableview,它基于由JSON构建的数组

tableData = [NSJSONSerialization JSONObjectWithData:dataWebService options:kNilOptions error:&error];
这一小行获取了构建tableview所需的所有数据

在tableview中,每个单元格中都有一个文本字段,其中包含来自JSON的预定义文本。用户可以在继续下一阶段(情节提要)之前更改此值

问题是,在将此arraobject发送到下一个segue之前,如何将此用户类型的值存储在数组中,并替换我的
tableData
数组中的激励值

请记住,当用户在tableview中滚动时,用户输入不得更改

也许这是最基本的,但我想不出一个好的方法

这是JSON的一个示例

(
    {
    defaultval = 8;
    dtype = long;
    id = "@franr";
    label = "Faktura nr.";
},
    {
    defaultval = 8;
    dtype = long;
    id = "@tilnr";
    label = "Til faktura";
}
tableview如下所示: (我不能发布图片)

弗拉·法克图拉8 蒂尔法克图拉8

用户可以将值(数字8)更改为任何数字。因此,我需要替换JSON数组中defaultVal的数量


谢谢

因为它是UITEXTFIELD,所以可以使用OnTextChange事件

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 

,或失去焦点

- (BOOL)textFieldShouldReturn:(UITextField *)textField

请记住,您需要将文本字段的委托设置为self并添加相应的协议。

为了在滚动后保留数据,您应该在用户每次输入后修改数据源(数组)。您可以在UITextFieldDelegate的
textfielddendediting:
方法中执行dis(当然,您必须是每个文本字段的代表:
textField.delegate=self;
)。 您还应该实现UIScrollViewDelegate方法,用于在表格开始滚动时关闭键盘(例如,
ScrollViewWillBeginDraging:

编辑:

您的数组必须包含NSDictionary,它们是不可变的,因此我建议您创建自己的具有这些属性的类(defaultval、dtype…),以便可以编辑数据源。我认为你不能像现在这样修改你的数组

带有自定义对象的代码类似于:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    UITableViewCell *cell = textField.superview.superview;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    MyObject *currentObject = [tableData objectAtIndex:indexPath.row];
    currentObject.defaultVal = textField.text.intValue;
}

奥凯。但是如何使用来自te用户输入的新值更新主数组呢。我会尝试一下,等我测试完后再回应。谢谢
- (void)textFieldDidEndEditing:(UITextField *)textField {
    UITableViewCell *cell = textField.superview.superview;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    MyObject *currentObject = [tableData objectAtIndex:indexPath.row];
    currentObject.defaultVal = textField.text.intValue;
}