Ios tableview编辑模式单元格选择复选标记在滚动时消失

Ios tableview编辑模式单元格选择复选标记在滚动时消失,ios,uitableview,Ios,Uitableview,我有一个启用编辑模式的UITableView,这样我可以选择多个单元格进行删除。选择单元格时,蓝色复选标记将显示在单元格的左侧。但是,当我将选定的单元格从视图中滚动出来,然后再滚动回选定的单元格时,我看到复选标记消失了。我可以看到单元格仍然处于选中状态,因为selectedBackgroundView的颜色与none selected单元格的颜色不同,但复选标记不断消失 我通过执行[tableView setEditing:YES动画:YES]进入编辑模式 我保留一个选定单元格的数组NSArra

我有一个启用编辑模式的
UITableView
,这样我可以选择多个单元格进行删除。选择单元格时,蓝色复选标记将显示在单元格的左侧。但是,当我将选定的单元格从视图中滚动出来,然后再滚动回选定的单元格时,我看到复选标记消失了。我可以看到单元格仍然处于选中状态,因为selectedBackgroundView的颜色与none selected单元格的颜色不同,但复选标记不断消失

我通过执行
[tableView setEditing:YES动画:YES]进入编辑模式

我保留一个选定单元格的数组
NSArray*selectedRows=[self.audioTable indexPathsForSelectedRows]

所选单元格:

将选定单元格从视图中滚出,然后返回选定单元格后,复选标记将消失,但单元格仍处于选定状态:

我知道我需要在
cellforrowatinexpath
中实现如下内容,但我不知道如何恢复选中标记

NSArray *selectedRows = [self.audioTable indexPathsForSelectedRows];
for (NSIndexPath *selectionIndex in selectedRows)
{
    if(selectionIndex.row == indexPath.row)
    {
        cell.selected = YES;
    }
}

我确实尝试设置了
cell.accessoryType=UITableViewCellAccessoryCheckmark
,但该单元格仍然未被选中。根据文档,左边的复选标记与编辑控件有关,右边的复选标记与附件视图有关,因此我不确定这个问题是否是其他问题的重复…

我解决了这个问题,这导致了另一个问题。在讨论这个问题之前,每次我选择一个单元格时,我的分隔线总是消失,所有这些解决方案都不适合我。当我的selectionStyle不是
UITableViewCellSelectionStyleNone
时,我注意到分隔线消失了。为了避免分隔线消失,同时保留蓝色的复选标记,我在
cellforrowatinexpath
中将selectionStyle设置为
UITableViewCellSelectionStyleNone
。但是,当我的tableview进入编辑模式时,我会将我的selectionStyle切换到“UITableViewCellSelectionStyleBlue”,并在退出编辑模式时将其切换回“UITableViewCellSelectionStyleNone”。到目前为止,这一切都非常有效

因此,每当我进入编辑模式时,我都会在tableViewCell类中调用一个自定义方法,该方法执行以下操作:

-(void) changeSelectionStyle: (BOOL) inDefaultMode
{
    if(inDefaultMode)
    {
        self.selectionStyle = UITableViewCellSelectionStyleBlue;
    }
    else
    {
        self.selectionStyle = UITableViewCellSelectionStyleNone;
    }

}

因此,到目前为止,每当我将单元格从视图中滚动出来,然后再滚动回所选单元格时,
cellforrowatinexpath
会将选择样式设置为
UITableViewCellSelectionStyleNone

复选标记消失的原因是iOS会回收单元格。我敢打赌,如果您选择了一些单元格并开始滚动,您可能会看到您没有选择的单元格开始显示复选标记。基本上,您的手机会从屏幕上消失,然后您可以滚动回屏幕。iOS抓取了一个回收单元,该单元在上次使用时碰巧隐藏了复选标记


因此,在
cellforrowatinexpath
中,应根据是否选中单元格明确设置“可见”或“隐藏”复选标记,以便在将单元格重新用于新项目时,正确隐藏或显示复选标记

另外,您还需要将
cell.accessoryType
设置为
UITableViewCellAccessoryCheckmark
。我尝试设置
cell.accessoryType
,但没有成功。另外,单元格右侧的
accessoryView
不是
accessoryType
吗?是的,对不起,我弄错了。我重新打开了问题,但您需要在问题中提供更多细节。显示更多有关如何设置单元格以及如何添加复选标记的代码。