如何在tableview中选择单个选择和多选?

时间:2017-08-08 07:44:37

标签: ios swift uitableview

在我的cellForRowAt我给我的xib充气并设置其内容:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! TableViewCell

    cell.label.text = data[indexPath.row]
    let tap = UIGestureRecognizer(target: self, action: #selector(tableCellTap(_:cell:)))
    cell.addGestureRecognizer(tap)

    cell.selectionStyle = .none
    cell.checkBox.isUserInteractionEnabled = false
    cell.checkBox.boxType = .circle

    cell.checkBox.markType = .radio
    cell.checkBox.cornerRadius = 0
    cell.checkBox.stateChangeAnimation = .expand(.fill)

    if (indexPath.row == selectedIndex){
        cell.checkBox.checkState = .checked
    }else{
        cell.checkBox.checkState = .unchecked
    }



    return cell
}

然后我设置取消选择并选择值

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let cell = tableView.cellForRow(at: indexPath) as! TableViewCell

    cell.checkBox.checkState = .checked
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! TableViewCell

    cell.checkBox.checkState = .unchecked
}

我需要一种方向感,如何让它选择并取消选择同一行并更新我的xib文件复选框? 正在使用m13checkbox 当我第一次点击单元格时它会选择它但是当我再次点击同一个单元格时它不会调用它并且在复选框中完成循环之前什么都不做

2 个答案:

答案 0 :(得分:1)

您不需要didDeselectRowAt,您可以通过检查didSelectRowAt中是否已选中单选按钮来实现相同的功能。 如果选中单选按钮,则只需取消选中它,反之亦然。

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let cell = tableView.cellForRow(at: indexPath) as! TableViewCell

    if(cell.checkBox.isChecked){
        cell.checkBox.checkState = .unchecked   
    }else{
        cell.checkBox.checkState = .checked 
    }

}

答案 1 :(得分:0)

Apple已在其网站上为此提供了非常好的示例代码, 您可以访问:https://developer.apple.com/library/content/samplecode/TableMultiSelect/Introduction/Intro.html