一尘不染

@IBDesignable崩溃代理

swift

当我编写自己的UIButton扩展类并使其@IBDesignable生成时,在Interface Builder中收到两个错误,即:

  • Main.storyboard:错误:IB Designables:无法更新自动布局状态:代理由于FD关闭而崩溃
  • Main.storyboard:错误:IB Designables:无法呈现RandjeUIButton的实例:代理崩溃

这是我的代码:

import UIKit

@IBDesignable
class RandjeUIButton: UIButton {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.backgroundColor = UIColor.blackColor()
    }
}

我正在OS X 10.11 beta 2上的Xcode 7 beta 2中工作。(在VM中运行)


阅读 237

收藏
2020-07-07

共1个答案

一尘不染

Xcode的Interface Builder要求您同时实现 两个 初始化器或 执行 两个
初始化器,@IBDesignable才能在IB中正确呈现类。

如果实现,则required init(coder aDecoder: NSCoder)还需要重写init(frame: CGRect),否则,如Xcode引发的错误所示,“代理将崩溃”。

为此,将以下代码添加到您的类中:

override init(frame: CGRect) {
    super.init(frame: frame)
}
2020-07-07