在我的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 当我第一次点击单元格时它会选择它但是当我再次点击同一个单元格时它不会调用它并且在复选框中完成循环之前什么都不做
答案 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