UITableCell背景颜色在不应该在其他单元格上重复

时间:2014-08-15 16:36:16

标签: ios uitableview swift ios8

以下代码片段在应用于UITableView时应仅使第一个单元格为橙色,而是使第15个单元格也变为橙色。知道如何让一个单元格变成橙色吗?或者这是一个错误?我正在使用ios8。

class ViewController: UITableViewController {

var links: [Int] = []

override func viewDidLoad() {
    for index in 1...100 {
        links.append(index)
    }

}

@IBOutlet var aTableView: UITableView!

override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return links.count
}

override func tableView(tableView: UITableView!, willDisplayCell cell: UITableViewCell!, forRowAtIndexPath indexPath: NSIndexPath!) {

    if indexPath.row == 0 {
        cell.backgroundColor = UIColor.orangeColor()
    }
}

2 个答案:

答案 0 :(得分:3)

这不是一个错误,它是一个功能! (但实际上)。

您看,这些单元格重复使用。如果您希望单元格0为橙色,则必须确保其他单元格是常规颜色。

像这样:

if indexPath.row == 0 {
  cell.backgroundColor = UIColor.orangeColor()
} else {
  cell.backgroundColor = UIColor.whiteColor()
}

答案 1 :(得分:0)

当您将单元格出列时,这意味着

返回不再可见的单元格
var cell = self.aTableView?.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as Cell

其中一个被更改为橙色背景,如果您向后滚动到表格的顶部,它可能会生成另一个橙色单元格。设置单元格外观时需要牢记这一点,如果没有特殊值,请务必重置为默认值。