@IBDesignable 无法使用 Swift 3 呈现类实例并崩溃代理

Posted

技术标签:

【中文标题】@IBDesignable 无法使用 Swift 3 呈现类实例并崩溃代理【英文标题】:@IBDesignable fails to render class instance and crashes agent with Swift 3 【发布时间】:2016-09-30 10:37:45 【问题描述】:

我有一个 xib,在构建项目后可以很好地加载。在构建时,虽然我收到以下错误:

Main.storyboard: error: IB Designables: Failed to render instance of PalitraPaletteSelector: The agent crashed

我已经阅读了很多答案,甚至清理了 DerivedData 文件夹也无济于事。两个初始化程序都已实现,所以我看不到我在这里缺少什么。

这是我的代码:

@IBDesignable
class PalitraPaletteSelector: NSStackView 

    @IBOutlet var view: NSStackView!

    required init?(coder: NSCoder) 
        super.init(coder: coder)
        loadViewFromNib()
    

    override init(frame frameRect: NSRect) 
        super.init(frame: frameRect)
        loadViewFromNib()
    

    func loadViewFromNib() 
        Bundle.main.loadNibNamed("PalitraPaletteSelector", owner: self, topLevelObjects: nil)
        view.frame = self.bounds
        self.addSubview(view)
    


【问题讨论】:

【参考方案1】:

您不能在可设计视图中使用Bundle.main。不如改用Bundle(for: type(of: self))

【讨论】:

非常感谢这个人!它确实有效,唯一的例外是 self.dynamicType 已被弃用。正确的语法是Bundle(for: type(of: self)) 糟糕,抱歉我的错误。我已经确定了我的答案。很高兴听到它现在有效。

以上是关于@IBDesignable 无法使用 Swift 3 呈现类实例并崩溃代理的主要内容,如果未能解决你的问题,请参考以下文章

使用Swift在Xcode 9中不显示IBDesignable UI

Swift @IBDesignable/@IBInspectable UIView 样式

Xcode 9.2 和 Swift 4 中的 AppKit 的 IBDesignable 是不是损坏?

swift 来自http://nshipster.com/ibinspectable-ibdesignable/

将 IBDesignable 和 IBInspectable 与 UIViewController 一起使用

如何创建 IBDesignable 自定义视图?