UITableViewCell选择样式更改所有子视图的背景颜色

时间:2017-08-21 16:22:58

标签: ios swift uitableview

我正在使用故事板快速编写,我正在使用iOS 10。

我有UITableViewCell由一些子视图组成(他们是UIView s)。其中一些子视图具有背景颜色。

单元格上的选择样式为默认(灰色)。

当我点击单元格时,单元格变为灰色。好。但是,单元格中每个子视图的背景颜色也会自动更改,以匹配单元格的选择颜色(灰色)。不好。

如何才能最好地预防此行为?我不希望单元格中子视图的背景颜色发生变化。

注意:我不认为通过侦听didSelectRowAtIndexPath委托方法然后设置单元格内容视图的背景颜色来进行自己的选择是一个非常好的解决方案。也许这是唯一的方法,但我想先看看是否还有其他选择。

更新 只是为了澄清,我不喜欢上面听取代表的解决方案的另一个原因是它修复了每个单元的问题。因此,如果我有其他使用相同子视图的自定义单元格,我将不得不实现相同的修复。我希望在视图级别而不是单元级别修复此问题。因此,当我在其他自定义单元格中为不同的表视图使用相同的视图时,我不必担心它。

1 个答案:

答案 0 :(得分:0)

这种方式比肯定听取didSelectRowAtIndexPath要好。 在自定义单元格类中使用这些属性:

override var isSelected: Bool {
        didSet {
            if isSelected {
                //play with colors
                print("selected")
            } else {
                //play with colors
                print("deselected")
            }
        }
    }

    override var isHighlighted: Bool {
        didSet {
            if isHighlighted {
                //play with colors
                print("highlighted")
            } else {
                //play with colors
                print("not highlighted")
            }
        }
    }

禁用选择样式:

cell.selectionStyle = UITableViewCellSelectionStyleNone

而且很棘手:

cell.selectedBackgroundView = UIView()