xcode - 将 xib 文件附加到自定义 UIView 类时出错

Posted

技术标签:

【中文标题】xcode - 将 xib 文件附加到自定义 UIView 类时出错【英文标题】:xcode - Error when attaching xib file to custom UIView class 【发布时间】:2015-07-28 09:08:13 【问题描述】:

我有一个UIView 类,我在其中以编程方式创建一些按钮和标签,并且我在附加到该类的某个ViewController 中有一个视图。该类按预期工作得非常好,但是每当我尝试将此自定义 UIView 类链接到 xib 视图时,我都会收到以下错误:

-"Main.storyboard: error: IB Designables: Failed to update auto layout status: Interface Builder Cocoa Touch Tool crashed"

-"Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
"

-"error: IB Designables: Failed to render instance of MyView: Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
"

这是UIView类中的初始化代码:

@IBDesignable class MyView: UIView 

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

        setup()

    

 required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)

        setup()

    

func loadFromNib() -> UIView 

        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "MyView", bundle: bundle)

        let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

        return view

    


    func setup() 

        var view = loadFromNib()
        view.frame = bounds
        view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
        addSubview(view)


    


类和xib文件同名,

更新:我发现:

 required init(coder aDecoder: NSCoder) 
            super.init(coder: aDecoder)

            setup()
        

是所有错误的负责人,但如果我删除了它的内容并运行应用程序,视图不会按预期显示,我也尝试了awakeFromNib() 并发生了同样的问题。

【问题讨论】:

【参考方案1】:

不太清楚是什么导致了您的具体错误,但是当我在将 xib 文件中的 UIView 连接到自定义 UIView 类时遇到问题时,这对我有帮助:

1) 删除您的 DerivedData 子文件夹的内容:

(当您再次构建项目时,将重新创建 DerivedData 的内容。)

可以通过访问 XCode 首选项中的“位置”选项卡找到您的文件夹。 只需删除其中的文件夹并重新构建/再次运行您的项目。

2) 清理你的项目

Product -> Clean(或者直接使用 [command + shift + K] 命令。

3) 重新启动 xcode 并重新构建/运行您的代码。

希望这会有所帮助!

【讨论】:

以上是关于xcode - 将 xib 文件附加到自定义 UIView 类时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 xib 将 tapGestureRecognizer 添加到自定义 UIView

添加和布局从 xib 加载的子视图到自定义单元格

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

UIToolbar xib xcode

CollectionViewCell 问题。从 .xib 到自定义 collectionviewcell 的故事板转换

如何将淘汰赛验证附加到自定义绑定