这是我的代码:
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
确定将第一个单元格作为选定单元格返回时,为什么会这样?这有什么问题?
答案 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 = true
或tableView.allowsMultipleSelection = true
,然后实现/覆盖tableView的两个函数selectRowAtIndexPath
和deselectRowAtIndexPath
。选中和取消选中复选框的位置。
在UITableView参考“管理选择”一章中查看here。 没有必要手动控制所有的重复使用。