UIView 中的“BOOL 突出显示”属性而不是 UITableViewCell?

Posted

技术标签:

【中文标题】UIView 中的“BOOL 突出显示”属性而不是 UITableViewCell?【英文标题】:"BOOL highlighted" property in UIView rather than UITableViewCell? 【发布时间】:2016-01-07 05:35:10 【问题描述】:

当我阅读 Apple 的 TableViewSuite sample code 时,我发现了一些令人困惑的地方:

APLTimeZoneViewAPLTimeZoneCellcontentView 中的 UIView。但是,有一个属性名为

@property (nonatomic, getter=isHighlighted) BOOL highlighted

APLTimeZoneView,显然,选择了属性的自定义setter时被选中。

我的问题是,为什么 APLTimeZoneView 中的突出显示属性而不是 APLTimeZoneCell ?我检查了 API 文档,似乎在 UIView 中没有这样的属性,只有在 UITableViewCell 中。为什么SETTER在选择行时被调用highlighted true,只要选择行?

【问题讨论】:

【参考方案1】:

在Table View Programming Guide中,有一条很小的说明写着:

如果子视图实现(如果适用)highlighted 属性的访问器方法,则会自动选择内容。

注意:要在 Swift 中实现相同的功能,您需要提供一个计算属性,以便您可以使用特定的 @objc 名称注释 setget

private var _highlighted: Bool = false
var highlighted: Bool 
    @objc(isHighlighted) get  return _highlighted 
    @objc(setHighlighted:) set 
        _highlighted = newValue

        // Now configure the view based on the new value...
    

【讨论】:

以上是关于UIView 中的“BOOL 突出显示”属性而不是 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

快速覆盖 UIView 中的默认图层类型

UIView contentstretch 将圆形更改为椭圆形,而不是药丸形状

UIView.layer.presentationLayer 返回最终值(而不是当前值)

如何在界面构建器中使用框架中的 UIView 子类

在 UIView 外部(而不是内部)添加边框

UIVIew/CALayer 动画期间的回调