在此处选择另一行时,如何取消选择行我的cellForRowAtIndexPath中有此项

if ff.isVisitedd{
        cell.accessoryType = .Checkmark
    }else{
        cell.accessoryType = .None
 }

这个在didSelectRowAtIndexpath中
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
        let selectedRows = tableView.indexPathsForSelectedRows! as? [NSIndexPath]
        let ff: Card!
        ff = cards[indexPath.row]
        ff.isVisitedd = true
        cell.accessoryType = .Checkmark
    }

最佳答案

根据我的理解,您希望在选择另一个单元格时删除先前选定单元格的复选标记。因为在cellForRowAtIndexPath方法中,您已经正确设置了accessoryType,所以任何新单元格都将具有正确的复选标记状态。剩下的唯一工作是删除现有单元格上的复选标记(如果有的话)。可以从表视图的visibleCells获取现有单元格。一种可能的解决方案是:

tableView.visibleCells.filter { $0 != cell }.forEach { $0.accessoryType = .None }

如果您喜欢for循环:
for visibleCell in tableView.visibleCells where visibleCell != cell {
    visibleCell.accessoryType = .None
}

08-26 13:19