Store TableView选择Row

时间:2016-09-19 07:30:12

标签: ios swift uitableview

我有一个表视图,我想更改选定的表视图选择的单元格颜色,并且滚动表视图时单元格颜色不会更改。有我的代码:

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()
            }
        }

滚动表视图时代码崩溃。

1 个答案:

答案 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
}