可选链
tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
cell跟上一个"?"是什么意思呢?其实这是 可选链
。
比如你在注册某账号时,nickName和passWord必须填写,地址可以不用填写。
取消cell选中后的灰色状态
tableView.deselectRow(at: indexPath, animated: true)
cell的重用导致的选中bug
当重用cell的时候,只更新了图像和文字,而没有更新选中的状态!
解决方法:
1、跟踪所有cell的选中状态
///cell状态数组,count=cell个数
var visited = [Bool](repeatElement(false, count: 20))
2、在选中cell 时,保存对应cell的选中状态属性
self.visited[indexPath.row] = true
3、重用cell的时候,读取cell的状态
if visited[indexPath.row] {
cell.accessoryType = .checkmark
}else{
cell.accessoryType = .none
}
//优雅点的写法
cell.accessoryType = visited[indexPath.row] ? .checkmark : .none
网友评论