的tableview回头率第一小区选择[迅速]

问题描述:

这里是我的代码:的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肯定会返回第一个单元格为选定的单元格,这是为什么呢?这里有什么问题?

你必须写

var currentRow = 0 
var cellTapped:Bool = true 

所以在此条件下

if indexPath.row == currentRow 
cellTapped = true 

这是真的。

试试这个

var cellTapped:Bool = false 
+0

请参阅编辑 – Sofeda

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

你在寻找一种方法来选择你的表中的一些行,并使复选框可见? 好吧,那么有一个更简单的方法来解决这个问题,而不需要手动重新使用单元格等。

基本上你设置的属性,让iOS的做选择一项或多项tableView.allowsSelection = truetableView.allowsMultipleSelection = true,然后实现/重写两个功能selectRowAtIndexPath和的tableView的deselectRowAtIndexPath。您在哪里检查并取消选中复选框。

看一看UITableView Reference的章节“管理选择”中的here。 没有必要手工控制所有的重复使用。