IOS Swift在使用nib文件获取可重用视图时出错

时间:2017-07-25 00:42:03

标签: ios uiview swift3 nib

我正在尝试做一个简单的可重用视图,由于某种原因,我得到了一个非特定的错误。我正在关注本教程https://www.youtube.com/watch?v=H-55qZYc9qI。如上所述,这是我第一次尝试这个。一切都正确编译,但当我去那个视图时,我得到一个运行时错误。奇怪的是,我完全遵循了该教程,并得到了错误。名称正确,视图连接正确。任何建议

import UIKit

class streamShared: UIView {
    @IBOutlet var view: streamShared!

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

        UINib(nibName: "streamShared", bundle: nil).instantiate(withOwner: self, options: nil)
      addSubview(view)
}
}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

你有一个无限的递归:streamShared.init(coder:)正在呼唤自己。

我认为子视图的类型应为UIView

import UIKit

// PLEASE name your classes, structs and enums Capitalized!
class StreamShared: UIView {

    var view: UIView!

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

        self.view = UINib(nibName: "streamShared", bundle: nil).instantiate(withOwner: self, options: nil)
        addSubview(view)
    }
}

另外,将xib文件中主视图的类更改为默认UIView(灰色);否则,在读取xib并实例化其中包含的视图时,仍会调用StreamShared.init(coder:)