tableview继续返回第一个单元格选中[swift]

时间:2016-08-22 08:42:50

标签: swift tableview

这是我的代码:

var currentRow = 0
var cellTapped:Bool = true


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("CheckOutTableViewCell", forIndexPath: indexPath) as! CheckOutTableViewCell

    if indexPath.row == currentRow {

        if cellTapped == false {

            cell.checkBox.checkState = .Unchecked


        } else if cellTapped == true{

            cell.checkBox.checkState = .Checked

        }
    }
    else{

        cell.checkBox.checkState = .Unchecked

    }

    return cell as UITableViewCell
}

每次tableview确定将第一个单元格作为选定单元格返回时,为什么会这样?这有什么问题?

3 个答案:

答案 0 :(得分:1)

你写了

var currentRow = 0
var cellTapped:Bool = true

所以在这种情况下

if indexPath.row == currentRow 
cellTapped = true

这是真的。

试试这个

var cellTapped:Bool = false

答案 1 :(得分:0)

正在重复使用细胞。您需要为单元格创建自己的子类并覆盖prepareForReuse()并重置该单元格中的选择。看看这个answer

答案 2 :(得分:0)

您是否正在寻找一种方法来选择表格中的某些行并使用复选框显示这些行? 那么,有一个更简单的方法来解决这个问题,而无需手动处理细胞重复等问题。

基本上,您将属性设置为让iOS执行单个或多个选择tableView.allowsSelection = truetableView.allowsMultipleSelection = true,然后实现/覆盖tableView的两个函数selectRowAtIndexPathdeselectRowAtIndexPath。选中和取消选中复选框的位置。

在UITableView参考“管理选择”一章中查看here。 没有必要手动控制所有的重复使用。