在UITableView中,一个单元格的内容更改也会更改其他单元格

时间:2013-07-07 11:55:45

标签: iphone ios uitableview custom-cell reuseidentifier

我创建了一个自定义单元格并在其上添加了一个uibutton。点击该按钮,我设置了该按钮,可以更改按钮的图像。

-(IBAction)btnInfoPressed:(id)sender
{
    [btnInfo setSelected:YES];
}

上述方法位于自定义单元格类中。现在当我向下滚动时,在某些单元格之后,即使我没有点击该按钮,也会选择其他单元格的按钮。

这是我的cellforrowatindexpath方法:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"CustomCell";
CustomCell *c = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (c == nil)
{
    c = [[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0];
}
c.selectionStyle = UITableViewCellSelectionStyleNone;
return c;
}

有什么想法需要做些什么?

1 个答案:

答案 0 :(得分:3)

(来自我上面的评论:) 您不能使用单元格来存储行的状态,因为单元格是重用的。 表视图仅分配有限数量的单元格。如果向下滚动,dequeueReusableCellWithIdentifier将返回一个已变为不可见的现有单元格。因此,您必须将行的状态存储在数据源中 在cellForRowAtIndexPath中更新单元格的完整状态(包括按钮的状态)。