滚动

时间:2016-10-16 12:01:05

标签: ios swift uitableview cell indexpath

我的项目中有一个UITableView控制器。所以我在这里做了一个UITableViewCell设置:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    cell.textLabel?.text = "Section: \(indexPath.section). Row: \(indexPath.row)."

    if indexPath.row % 2 == 1 {
        cell.backgroundColor = UIColor.gray
    }

    return cell
}

如果他们的索引不能被2整除,我希望我的tableview的单元格是灰色的。

当tableview出现时,一切都很完美!但是当我上下滚动时,细胞开始将颜色变为灰色。

所以最后我的所有细胞都是灰色的。

以下是一些图片:

before

after

3 个答案:

答案 0 :(得分:3)

尝试添加else语句,因为这些单元格会被重复使用。

else {
    cell.backgroundColor = UIColor.white
}

答案 1 :(得分:2)

问题是你从未将背景设置为白色。由于单元格正在被重用,所以在某些时候你为所有单元格设置了灰色。相反,每次重复使用单元格时都应检查行索引:

cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.white : UIColor.gray

答案 2 :(得分:0)

因为tableview重用了单元格

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

cell.textLabel?.text = "Section: \(indexPath.section). Row: \(indexPath.row)."

if indexPath.row % 2 == 1 {
    cell.backgroundColor = UIColor.gray
}else{
    cell.backgroundColor = YOUR_COLOR
}
return cell

}

编辑:盖勒特·李首先回答并非常简单