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

  • 主要的情节提要:错误:IB可指定项:未能更新自动布局状态:代理因fd关闭而崩溃
  • Main.Storyboard:Error: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上工作.(在虚拟机中运行)

推荐答案

Xcode的Interface Builder要求您为@IBDesignable个类实现bothneither个初始值设定项,才能在IB中正确呈现.

如果实现required init(coder aDecoder: NSCoder),您还需要重写init(frame: CGRect),否则"代理将崩溃",如Xcode抛出的错误所示.

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

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

Ios相关问答推荐

iPhone:iOS 17.4中没有气压数据

如何遮罩,动画和添加阴影到CAShapeLayer?

如何在iOS中以编程方式推送另一个页面?

快速相机放大手势不能正常工作

UITableViewCell编程约束问题

iphone 11 和 iphone 12 对于相同的布局显示不同的结果

如何链式设置 AttributeContainer 的 UIKit 属性?

实现 ListView Builder Widget Flutter 后退按钮不起作用

UIView 阴影不适用于自定义扩展

如何在 SwiftUI 视图中显示协议视图?

SwiftUI - TextField - 在焦点上清除 Double 类型的值,在取消 Select 时恢复

SwiftUI 动画:为什么容器视图在移动?我很难理解这种行为

如何让替换视图淡入旧视图而不是交叉淡入淡出?

错误:无法根据成员environmentObject推断上下文基础

在 Swift 中追加字符串

在 iPhone 中将 UIViewController 显示为弹出窗口

Swift中类的初始化类方法?

从 iOS/Android 上的 Web 应用调用本机日期 Select 器

我可以在 UIScrollView 中使用 UIRefreshControl 吗?

UIGestureRecognizer 阻止子视图处理touch 事件