0

我有一个表格视图,其中包含动态数量的单元格,基于由 JSON 构建的数组。

tableData = [NSJSONSerialization JSONObjectWithData:dataWebService options:kNilOptions error:&error];

这条小线获取了构建表格视图所需的所有数据。

在表格视图中,我在每个单元格中都有一个文本字段,其中包含来自我的 JSON 的预定义文本。用户可以在进行下一个转场(故事板)之前更改此值。

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

请记住,当用户在表格视图中滚动时,用户输入不得更改。

也许这是基本的,但我想不出一个很好的方法来做到这一点。

这是 JSON 的一个示例。

(
    {
    defaultval = 8;
    dtype = long;
    id = "@franr";
    label = "Faktura nr.";
},
    {
    defaultval = 8;
    dtype = long;
    id = "@tilnr";
    label = "Til faktura";
}

表格视图如下所示:(我无法发布图片)

Fra faktura 8 直到 faktura 8

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

谢谢。

4

2 回答 2

0

由于它是一个 UITEXTFIELD,您可以使用 OnTextChange 事件

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

或者

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     
                  replacementString:(NSString *)string

,或失去焦点

- (BOOL)textFieldShouldReturn:(UITextField *)textField

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

于 2012-12-19T21:06:50.173 回答
0

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

编辑:

您的数组必须包含不可变的 NSDictionaries,因此我建议您创建自己的具有这些属性(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;
}
于 2012-12-19T21:07:43.417 回答