Iphone 一个单元格内容的更改也会更改UITableView中的其他单元格
我已经创建了一个自定义单元格,并在其上添加了一个uibutton。点击该按钮,Im设置所选按钮,更改按钮的图像Iphone 一个单元格内容的更改也会更改UITableView中的其他单元格,iphone,ios,uitableview,custom-cell,reuseidentifier,Iphone,Ios,Uitableview,Custom Cell,Reuseidentifier,我已经创建了一个自定义单元格,并在其上添加了一个uibutton。点击该按钮,Im设置所选按钮,更改按钮的图像 -(IBAction)btnInfoPressed:(id)sender { [btnInfo setSelected:YES]; } 上述方法位于自定义单元格类中。现在当我向下滚动时,在一些单元格之后,另一些单元格的按钮也被选中,即使我没有点击该按钮 以下是我的cellforrowatindexpath方法: -(UITableViewCell *)tableView:(U
-(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;
}
有什么想法吗?(来自我上面的评论:)
不能使用单元格存储行的状态,因为单元格是重复使用的。
表视图仅分配有限数量的单元格。如果向下滚动,dequeueReusableCellWithIdentifier
返回一个不可见的现有单元格。因此,必须将行的状态存储在数据源中,然后
更新cellforrowatinexpath
中单元格的完整状态(包括按钮状态) (从我上面的评论:)
不能使用单元格存储行的状态,因为单元格是重复使用的。
表视图仅分配有限数量的单元格。如果向下滚动,dequeueReusableCellWithIdentifier
返回一个不可见的现有单元格。因此,必须将行的状态存储在数据源中,然后
更新
cellforrowatinexpath
中单元格的完整状态(包括按钮状态) Show method[btnInfo setSelected:YES]
。默认的UIButton属性将其状态从“正常”更改为“选定”或“恢复正常”。那么您不应该使用[sender setSelected:YES]
?它仍然会选择其他单元格中的按钮。@AmmadHussain:但原因是相同的。表视图仅分配有限数量的单元格。如果向下滚动,dequeueReusableCellWithIdentifier
返回一个不可见的现有单元格。因此,您必须在CellForRowatineXpath.Show方法中更新单元格的完整状态(包括按钮的状态)。Show方法[btnInfo setSelected:YES]
。默认的UIButton属性是将其状态从正常更改为选中或恢复为正常。然后,您不应该使用[sender setSelected:YES]
?它仍然使其他单元格中的按钮处于选中状态。@AmmadHussain:但原因是相同的。表视图仅分配有限数量的单元格。如果向下滚动,dequeueReusableCellWithIdentifier
返回一个不可见的现有单元格。因此,您必须在cellForRowAtIndexPath中更新单元格的完整状态(包括按钮的状态)。