我有一个表视图,我想更改选定的表视图选择的单元格颜色,并且滚动表视图时单元格颜色不会更改。有我的代码:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath
indexPath: NSIndexPath) {
let selectCell = tableView.indexPathForSelectedRow
self.selectedCell.append(selectCell!)
for i in selectedCell
{
if(!(i .isEqual(indexPath)))
{
let currentCell = tableView.cellForRowAtIndexPath(i)! as UITableViewCell
currentCell.backgroundColor = UIColor.lightGrayColor()
}
}
滚动表视图时代码崩溃。
答案 0 :(得分:2)
你的代码对我来说似乎很奇怪。每次选择一个单元格时,不需要设置所有其他单元格的背景颜色。将celectedCells
定义为Int:Bool
类型的字典,以便为每个true
设置为indexpath.row
,如下所示:
var selectedCells = [Int: Bool]()
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.backgroundColor = UIColor.lightGrayColor()
selectedCells[indexPath.row] = true
}
}
然后在你的cellForRowAtIndexPath
方法中检查该字典以设置backgroundColor,如下所示:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("YourCellIdentifier", forIndexPath: indexPath)
if selectedCells[indexPath.row] == true {
// Color for selected cells
cell.backgroundColor = UIColor.lightGrayColor()
} else {
// Color for not selected cells
cell.backgroundColor = UIColor.whiteColor()
}
//Rest of your Cell setup
return cell
}