如何找到调用Decoder初始化程序的基类

时间:2017-11-26 10:14:16

标签: ios swift uiview nscoder

我有一个继承自UIView的BaseView类,如:

@IBDesignable class BaseView: UIView {
 override init(frame: CGRect) {
    super.init(frame: frame)
   }

 required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
   }
}

我在故事板中为UILabelUIButtonUITextField设置了此课程。

现在,我必须认识到UILabelUIButtonUITextField中的哪一个被称为init?(coder aDecoder: NSCoder)

这个问题还有吗?

更新

似乎无法将UIView类型的自定义类设置为UILabel,因此无法解决此问题。

1 个答案:

答案 0 :(得分:2)

我试着测试班级

if self is UILabel { }

但是我得到一个编译器警告,从BaseView转换为不相关的UILabel总是失败

if (self as UIView) is UILabel { }

清除警告但没有用。

所以一个问题:你说" 我在故事板中为UILabel,UIButton和UITextField设置了这个类"

你能详细说明你做了什么吗?

您如何申报IBOutlet? BaseView?您在IB中为标签分配了什么类型? 因为BaseView不是UILabel的子类,所以我无法将标签声明为BaseView?