Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 一个单元格内容的更改也会更改UITableView中的其他单元格_Iphone_Ios_Uitableview_Custom Cell_Reuseidentifier - Fatal编程技术网

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

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

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

-(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中更新单元格的完整状态(包括按钮的状态)。