我有一个表视图,我可以在其中添加1或减去1 cell.textLabel.text
的值,但是当我切换视图并返回或滚动视图中的单元格时,以及当它返回视图时,textLabel
的值返回1
,这是最初的起点!请帮忙!以下是添加和减去1的代码:
- (IBAction)addLabelText:(id)sender{
cell = (UITableViewCell*)[sender superview]; // <-- ADD THIS LINE
cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text
intValue] +1];
}
- (IBAction)subtractLabelText:(id)sender
{
cell = (UITableViewCell *)[sender superview];
if ( [[cell.textLabel text] intValue] == 0){
cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] +0];
}
else{
cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] -1];
}
}
答案 0 :(得分:2)
发生这种情况是因为,细胞将在滚动时重复使用。将调用表视图的数据源方法,因此值将重置为原始值。您可以将NSNumber
的数组维护为tableview的数据源(在cellForRowAtIndexpath
:中,从数组中设置单元格标签的文本)。每次需要添加或减去时,请执行相应的NSNumber
obj并重新加载tableview。
答案 1 :(得分:1)
您没有更新数据模式。这就是它采用原始内容价值的原因。
答案 2 :(得分:1)
似乎每次都要分配一个新的单元格而不使用单元格重新使用方法。 在您的情况下,当您对先前的值执行算术运算并且没有用于存储先前值的数组时。解决此问题的最简单方法是使您的Cell-Identifier独一无二。 (类似@“Cell-%d”,indexPAth.row)
注意:但是,更有效的方法是将结果保存到填充数据的数组中,而不会使单元标识符唯一。
答案 3 :(得分:0)
更改后,单元格文本值会重新加载tableview [self.tableview reloadData]