Objective c 使用tableviewcell UITextfield中的输入构建数组
我有一个具有动态单元格数量的tableview,它基于由JSON构建的数组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
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;
}