如何更改表格视图单元格的选定颜色?

时间:2017-06-26 03:08:35

标签: ios swift uitableview

当我选择表格视图上的单元格时,它会变为此白色。我想改变它。

enter image description here

我尝试使用if语句,但它没有用。

这是我使用的代码。

override func tableView(_ tableView: UITableView, cellForRowAt 
indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath)

    if cell.isSelected == true {
        cell.backgroundColor = .blue
    } else {
        cell.backgroundColor = .red
    }

    return cell

}

5 个答案:

答案 0 :(得分:11)

你可以做其中任何一个 -

  1. 更改单元格的selectionStyle属性。
  2. 例如:如果将其更改为UITableViewCellSelectionStyleGray,它将为灰色。

     cell.selectionStyle = UITableViewCellSelectionStyleGray;
    
    1. 更改selectedBackgroundView属性。

      let bgColorView = UIView()
      bgColorView.backgroundColor = UIColor.red
      cell.selectedBackgroundView = bgColorView
      
    2. 迅速纠正:

          cell.selectionStyle = UITableViewCellSelectionStyle.gray
      

答案 1 :(得分:1)

也许你需要这个:

cell.selectedBackgroundView

答案 2 :(得分:0)

您可以在“willSelect”或“didSelect”方法中进行背景颜色更改。 例如:

override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
    let cell = tableView.cellForRow(at: indexPath)!
    cell.contentView.superview?.backgroundColor = UIColor.blue
    return indexPath        
}

答案 3 :(得分:0)

在您的UITableViewCell类中,使用以下代码更改所选单元格背景颜色

override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        if selected {
            self.contentView.backgroundColor = UIColor.red
        } else {
            self.contentView.backgroundColor = UIColor.white
        }
    }

答案 4 :(得分:0)

您可以使用awakeFromNib方法设置“选定背景”视图

class MyCell: UITableViewCell {
     override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
            selectedBackgroundView = {
                let view = UIView.init()
                view.backgroundColor = .white
                return view
            }()
        }
}