如何添加Checkmark TableView Multiple Swift 3.0

时间:2017-01-19 08:57:01

标签: ios swift uitableview swift3

我想让用户多选(年)或选择(全部),其余的单元格消失(选中标记)。 我希望用户无法取消每个(复选标记)。

这是我的代码: -

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .checkmark
 }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! yearsCell 
cell.years?.text = Years[indexPath.row]
return cell }

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:3)

我这样做的方法是将selectedindexPath存储在一个数组中,然后重新加载tableView以更改所选的单元格,这样可以避免细胞重新出现问题 - 使用,这可能看起来像这样(未经测试)。

var selectedIndexPathArray = Array<NSIndexPath>()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath)
    selectedIndexPathArray.append(indexPath)
    tableView.reloadData()
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! yearsCell 
    cell.years?.text = Years[indexPath.row]
    cell.accessoryType = .none
    for sip in selectedIndexPathArray {
        if indexPath == sip {
            cell.accessoryType = .checkmark
        }
    }
    return cell 
}

答案 1 :(得分:1)

喜欢如此:

SWIFT 3

// To checkmark the cell
let cell = tableView.cellForRow(at:indexPath.row)
cell.accessoryType = .checkmark
// To make it unselectable

使用tableView:willSelectRowAtIndexPath:方法,检查indexPath.row是否是您刚选择的单元格的行,return false

答案 2 :(得分:0)

细胞可重复使用。例如,用于显示第1行的单元格可用于在向下滚动时显示第10行。因此,您需要一个数组存储每行的复选标记状态,一些代码如:

  • didSelect:array [indexpath.row] =!array [indexpath.row]
  • cellForRow:setCheckmark(array [indexpath.row])

更多:谷歌如何以及为什么在tableview中重用单元格