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

时间:2015-07-28 09:08:14

标签: xcode swift uiview xib

我有一个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 个答案:

答案 0 :(得分:0)

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

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

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

您可以通过访问XCode首选项中的“位置”标签找到您的文件夹。 只需删除里面的文件夹,然后重新构建/运行你的项目。

2)清理你的项目

产品 - >清洁(或者只使用[command + shift + K]命令。

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

希望这有帮助!