我有一个简单的表格,其中每个自定义单元格都包含一个文本字段。在 cellForRowAtIndexPath:中,我根据 indexPath.row 创建并初始化每个单元格:
case 0:
{
CellIdentifier = @"TextEditCell";
TextEditCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
[cell configureCellWithText: [self.valueArray objectAtIndex:0]
placeholder: @"value no.0"]
[cell performAction: @selector(saveValue0:)
forControlEvent: UIControlEventEditingDidEnd
inTarget: self];
return cell;
}
configureCellWithText:占位符:设置单元格textField的文本和占位符。 performAction:forControlEvent:inTarget 直接引用textField,并将textField的值保存到本地数组,以便在再次使用时保持准确。
当我快速滚动表格时出现问题。来自不同单元的值复制到另一个单元并修改本地数组。我无法找出它为什么会发生。任何人都有任何想法?如果需要,我可以提供更多代码。
答案 0 :(得分:0)
这种情况正在发生,因为您正在重用单元格,并且在重用单元格后正在运行configureCellWithText。要解决这个问题,你可以:
tableView:didEndDisplayingCell:forRowAtIndexPath:
取消文本设置操作。修改强>
因为我不知道你的细胞是如何工作的。我很难再给你一个sudo代码概念。
这是我的sudo代码:
Tableview Cell for row ... - 出列细胞 - [cell cancel_previous_action] - 设定新的行动。