在tableView上选择单行时,会选择多行

时间:2016-05-22 19:10:58

标签: ios uitableview swift2

我在选择TableView中的任何一行时都遇到了这个奇怪的问题,另一行也被选中了,比如说我有一个tableView,在我的情况下有多行11,并且启用了带勾号的附件的多项选择(当我选择了一行,在所选行上标记了勾号)所以当选择我的第一行时,也会选择第8行(我可以在行号8中看到刻度线,但我只选择了行号1)当我选择另一行第2行时,我的第9行也会被选中,不知道为什么会发生这种情况,如果有人知道这种行为,那么请让我知道它对我有用,下面是{{1的代码}}:

didSelectRowAtIndexPath

cellForRowAtIndexpath:

var selectedTextLabels = [NSIndexPath: String]()
var selectedTextLabelsName = [NSIndexPath: String]()



    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){

    let cell = tableView.cellForRowAtIndexPath(indexPath) as! UsersTableViewCell

    if (cell.accessoryType == UITableViewCellAccessoryType.Checkmark){

        cell.accessoryType = UITableViewCellAccessoryType.None;

        selectedTextLabels[indexPath] = nil
        selectedTextLabelsName[indexPath] = nil
     }else{
        cell.accessoryType = UITableViewCellAccessoryType.Checkmark;

        if (cell.accessoryType == UITableViewCellAccessoryType.Checkmark){

    if let Id = cell.channelIDLbl?.text {
                selectedTextLabels[indexPath] = Id
            }
            if let channelName = cell.lblChannelname?.text{

                selectedTextLabelsName[indexPath] = channelName
            }

         } 
}

1 个答案:

答案 0 :(得分:1)

channelIDLbl数组内检查是否存在cellforRowAtIndexPath的单元格ID

    if ((selectedTextLabels[indexPath]?.containsString("\(cell.channelIDLbl)")) != nil){


        cell.accessoryType = .Checkmark
    }else {

        cell.accessoryType = .None
    }

有关详细信息,请查看相同的question