我有一个UITableView,一旦单击一个单元格,它就会推送包含自定义单元格的tableViewB。这些单元格包含TextFields。一旦用户进行任何更新,他们点击“保存”,然后弹出tableViewB并转到第一个UITableView。我想在单击Save时从tableViewB获取所有UITextField值。这样做的最佳方法是什么?
问题是我需要循环遍历所有UITableView单元格。我不确定这是怎么做的,或者它是否是一个好方法。只是在这里寻求有关什么是好技术的帮助。
答案 0 :(得分:3)
您应该知道,一般情况下,屏幕上显示的细胞分配的数量与此相同。不可见的单元格实际上不是持久的,而是仅在调用tableView:cellForRowAtIndexPath:
时创建。我建议你创建一个数组来缓存所有文本字段的内容,并且每当用户离开文本字段(例如textField:shouldEndEditing:方法或类似的东西)时,它就会被更新。
答案 1 :(得分:3)
,声明:
NSMutableArray *stringArray;
并在实施中:
- (id) init { //whatever your tableViewB initializer looks like
if ([self = [super init]) {
//oldData is an NSArray containing the initial values for each text field in order
stringArray = [[NSMutableArray alloc] initWithArray:oldData];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
//Making the cell
[cell.textfield addTarget:self action:@selector(updateField:) forControlEvents:UIControlEventValueChanged];
....
//Setting up the cell
cell.textfield.tag = indexPath.row;
cell.textfield.text = [stringArray objectAtIndex:indexPath.row];
return cell;
}
- (void) updateField:(UITextField *)source {
NSString *text = source.text;
[stringArray replaceObjectAtIndex:source.tag withObject:text];
}
- (void) dealloc {
[stringArray release];
}
有几种方法可以选择将数据恢复到原始表视图,或者通过委托,或者将stringArray声明为传递给tableViewB初始化程序而不是在那里分配的变量。
答案 2 :(得分:1)
如果我理解你的问题 - 以数字形式识别每个单元格并在数组中引用它们/爬上数组以循环遍历它们