使用loadNibNamed

问题描述

这是我的代码

override init(frame: CGRect) {
    super.init(frame: frame)
    commonInit()
}

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

func commonInit() {
    let mainBundle = Bundle.main
    mainBundle.loadNibNamed("iconView",owner: self,options: nil)
    addSubview(contentView)
    contentView.frame = self.bounds
    contentView.autoresizingMask = [.flexibleWidth,.flexibleHeight]
}

我从见过的this tutorial的第8步复制了它(我只将代码中的名称更改为我的xib文件:“ iconView”)。 但是由于某种原因它失败了:

fail

我已经在stackoverflow中尝试了所有解决方案,但没有任何帮助。 这是我的xib文件

xib file

我真的不知道该怎么办。 我正在使用Xcode 12 beta 6,iOS 14 beta 6 更新 好的,很多人在本教程的评论中说

这将导致无限循环调用commonInit()。

所以现在我知道了问题所在,但我仍然不知道如何解决。有什么想法吗?

解决方法

您可能必须从视图中删除Class。

首先选择您的View(在您的情况下为iconView):

enter image description here

,然后清除class字段中的所有内容:

enter image description here