所以,我认为我的问题很简单,但我无法弄清楚如何做到这一点: 我在UIViewController里面有UITableView。假设tableView有50个单元格。所以问题是如何从顶部获取正好3个单元格的实例(例如)。例如,我只想从顶部改变第三个cel的背景颜色。 我的代码看起来像这样:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
cell.textLabel?.text = dataArray[indexPath.row]
if indexPath.row == 3 {
cell.backgroundColor = UIColor.init(white: 0.9, alpha: 1)
}
return cell
}
我知道这段代码不起作用,因为单元格会出列。
答案 0 :(得分:1)
您可以通过不同方式更改第3个细胞的颜色。
我认为,在这种情况下,您错过了else
块,以便重置将使同一对象出列的其他单元格的背景。
答案 1 :(得分:1)
您的代码是正确的,您只需要考虑else
案例。
if indexPath.row == 3 {
cell.backgroundColor = UIColor(white: 0.9, alpha: 1)
} else {
//reset your cell to default so dequeue will work correctly
}
答案 2 :(得分:0)
如果想在cellforrowAtindexpath中改变颜色,那么:
if indexPath.row == 3 {
cell.backgroundColor = UIColor(white: 0.4, alpha: 1)
} else {
//reset your cell to default so dequeue will work correctly
}
/ ************** / 如果那边功能那么
让Cell = tableView.cellForRow(at:IndexPath(row:3,section:0)) cell.backgroundColor = UIColor(白色:0.4,alpha:1)
答案 3 :(得分:-1)
如果你的意思是你想要屏幕顶部的第三个,那么J =只需使用visibleCells
let cell = tableView.visibleCells[2]
如果您的意思是想要tableView中的第三个单元格,那么您的代码几乎是正确的。第三个单元格位于第2行,因为第一个单元格位于第0行。要触发更改,您可以调用tableView.reloadRows
tableView.reloadRows(at: [IndexPath(row: 2, section: 0)], with: .automatic)