我有一个UILabel的子类:
class MyLabel: UILabel {}
我想将此标签用作UIButton的titleLabel:
class MyButton: UIButton {
var label: MyLabel!
override open var titleLabel: MyLabel? {
get {
return label
}
}
}
它在XCode中编译,但我想在Cocoapods的框架中使用它。当我尝试将其推送到存储库时,它会验证代码。它抛出一个错误:
警告| [iOS] xcodebuild:/Users/user/Library/Developer/Xcode/DerivedData/App-dprjfnapcavegfcniqgbxhrinmym/Build/Products/Release-iphonesimulator/vieww/vieww.framework/Headers/vieww-Swift.h:197:63: 警告:属性类型'MyLabel * _Nullable'与。不兼容 输入'UIButton'继承的'UILabel * _Nullable'
如何覆盖titleLabel?是否可以使用子类?
答案 0 :(得分:0)
更改MyButton类,以使titleLabel的返回类型为UILabel?
class MyButton: UIButton {
var label: MyLabel!
override open var titleLabel: UILabel? {
get {
return label
}
}
}
这会使正在生成的警告静音。但是当你想使用MyLabel功能访问titleLabel时,你必须像这样进行转换:
if let myLabel = button.titleLabel as? MyLabel {
print(myLabel.classForCoder)
}
希望这个黑客解决这个问题。