使用以下命令覆盖open var:<未知>:0:错误:“ xxx”仅在iOS 11.0或更高版本上可用

时间:2018-08-23 05:59:50

标签: ios swift uikit override

我想观察一个属性didSet,该属性仅在更新的iOS版本上可用。我尝试过:

class CustomNavigationBar: UINavigationBar {

    @available(iOS 11.0, *)
    override open var prefersLargeTitles: Bool {
        didSet {
            print(prefersLargeTitles)
        }
    }
}

但是我得到了

  

<未知>:0:错误:“ prefersLargeTitles”仅在iOS 11.0或更高版本上可用

Xcode版本9.4(9F1027a)
斯威夫特4.1
iOS部署目标9.0
iPhone SE 11.4模拟器

1 个答案:

答案 0 :(得分:0)

我不确定didSet@available不兼容的原因,但是我发现get + set的变通方法没有错误:

@available(iOS 11.0, *)
override open var prefersLargeTitles: Bool {
    get {
        return super.prefersLargeTitles
    }
    set {
        super.prefersLargeTitles = newValue
        // `didSet` logic here:
        print(prefersLargeTitles)
    }
}