Swift基础入坑

tableviewCell的一些备注

2018-06-11  本文已影响15人  iOS_July

可选链

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
上一篇 下一篇

猜你喜欢

热点阅读