请参见Screenshot
我正在尝试将所选单元格的背景颜色更改为白色。但是我看到有些区域仍然是灰色的。 如何避免这种情况?
self.tableView.selectRow(at: defaultLangIndexPath, animated: true, scrollPosition: .bottom)
let selectedCell:UITableViewCell = tableView.cellForRow(at: defaultLangIndexPath)!
selectedCell.contentView.backgroundColor = UIColor.white
selectedCell.accessoryView?.backgroundColor = UIColor.white
我无法取消选择单元格,因为我想要突出显示的附件图像并希望其按预期工作。
答案 0 :(得分:1)
为解决这个问题,UITableViewCell
具有一个名为selectedBackgroundView
的属性,该属性在初始化时为nil
。
因此,您可以使用简单的UIView()
对其进行初始化,并在tableViewCell的selectedBackgroundView
方法中设置setSelected:
的背景颜色。
class SelectionCell: UITableViewCell {
func awakeFromNib() {
...
self.selectedBackgroundView = UIView()
// this view can be initialised in awakeFromNib
or UITableViewCell's initialiser methods.
...
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.selectedBackgroundView?.backgroundColor = selected : .white : .clear
...
}
}
答案 1 :(得分:0)
快捷键4
A:通过在情节提要中设置
转到情节提要,选择单元格,转到属性检查器(位于右上角),选择后,将其设置为“无”
B:按单元子类
请确保在Storyboard Identity Inspector上或以编程方式设置此自定义单元格类型。
class WhiteBackgroundCell: UITableViewCell {
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .none
//or for custom color
//let background View = UIView()
//backgroundView.backgroundColor = .white
//selectedBackgroundView = backgroundView
//other cell setting
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
//do something
}
}
C:通过TableViewDelegate
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let cell = tableView.cellForRow(at: indexPath)else{return}
cell.backgroundColor = UIColor.white
}
选项 A和B都很好。选项 C不是一个好习惯,但不确定您要实现的目标。由于该委托旨在执行一些逻辑/触发,而不是设置单元格背景。另外,您需要将背景颜色更改为正常状态并取消选择。