ios - 如何找到调用解码器初始化程序的基类

标签 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)
   }
}

我在 Storyboard中为 UILabelUIButtonUITextField 设置了此类。

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

有什么办法解决这个问题吗?

更新:

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

最佳答案

我试着测试这个类

if self is UILabel { }

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

if (self as UIView) is UILabel { }

清除警告但没有用。

那么一个问题:你说“我在 Storyboard中为 UILabel、UIButton 和 UITextField 设置了这个类

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

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

关于ios - 如何找到调用解码器初始化程序的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47495010/

相关文章:

ios - iOS 中 iMessage 扩展中导航栏后面可见的 Collection View

ios - (iOS Swift)谷歌地图 animateWithCameraUpdate 不工作

ios - 如何允许用户每 "n"秒刷新一次表?

ios - 如何在 Firestore 中构建搜索列表?

ios - 以编程方式创建具有颜色渐变的 UIView

iOS - 应用内购买 - 获取产品价格

ios - 使用 iOS 应用程序的 swift 更改图像

ios - 审查您的企业应用程序到苹果。是必需的吗?

iphone - 使用dismissModalViewControllerAnimated刷新上一个 View

ios - 了解 UIImage 大小属性与 UIView 帧大小属性的比较