我有一个继承自UIView的BaseView类,如:
@IBDesignable class BaseView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
我在故事板中为UILabel
,UIButton
和UITextField
设置了此课程。
现在,我必须认识到UILabel
,UIButton
或UITextField
中的哪一个被称为init?(coder aDecoder: NSCoder)
。
这个问题还有吗?
更新
似乎无法将UIView类型的自定义类设置为UILabel,因此无法解决此问题。
答案 0 :(得分:2)
我试着测试班级
if self is UILabel { }
但是我得到一个编译器警告,从BaseView转换为不相关的UILabel总是失败
if (self as UIView) is UILabel { }
清除警告但没有用。
所以一个问题:你说" 我在故事板中为UILabel,UIButton和UITextField设置了这个类"
你能详细说明你做了什么吗?
您如何申报IBOutlet? BaseView?您在IB中为标签分配了什么类型? 因为BaseView不是UILabel的子类,所以我无法将标签声明为BaseView?