我希望通过添加一些函数来扩展UIView,并在任何我想要的UIView子类中覆盖它们。我在苹果文档中发现,我不能覆盖扩展(编译器会抱怨),这有一定道理。因此,
我需要有人建议下面的替代方法:
我需要有人建议下面的替代方法:
extension UIView {
func hide() { //do almost nothing }
}
class myLabel: UILabel {
override func hide() {
//do work on uilabel that can't be done on imgView
}
}
class myImageView: UIImageView {
override func hide() {
//do work on imgView that can't be done on uilabel
}
}
我希望这样做的原因是,后面在我的代码中会遇到以下的代码,而我有太多的子类,不想写太多的if-lets
试图将view
转换为myLabel、myTextView、myImageView等
。
let view = cell.viewWithTag(someTag)
// and I want to write this below without casting
view.hide()
我尝试使用协议
和协议扩展
,但我无法成功。
你有什么想法吗?
注意:func hide()
只是一个示例。我的函数将有更多操作。
**问题已更新以更清晰表达。
UIView
的子类,然后再让你的UIView
子类成为另一个类的子类。如果你需要不同的行为,那么扩展并不是正确的方法。 - Paulw11hide()
函数。我有myLabel: UILabel {}
和myImgView: UIImageView {}
等等,所以我无法子类化UIView
,因为如果我把myLabel: myView
这样做,那么我就无法将它子类化为UILabel
了。 - Ahmed FathiUIView
类,或者需要对每个现有的UIView
子类进行子类化或扩展。 - Paulw11