我正在练习 awakeFromNib。
UIView
我在 Main.storyboard 中有一个。这个 UIView 继承class CardView
.
代码如下
class ViewController: UIViewController {
@IBOutlet weak var cardView: CardView!
}
我有一个CardView.xib
. 在 CardView.xib 中,有一个默认的单个 UIView 继承了class CardView
. 在这个 UIView 内部,还有另一个继承了class CardContentView
. 当然,我有一个 CardView.swift,它有class CardView
.
代码如下
class CardView: UIView {
@IBOutlet weak var cardContentView: CardContentView!
override func awakeFromNib() {
cardContentView.layer.cornerRadius = 16
}
}
我有一个CardContentView.xib
. 在 CardContentView.xib 中,有一个UIView
继承了 default的默认单曲class UIView
。当然,我有一个 CardContentView.swift ,它有class CardContentView
.
代码如下
class CardContentView: UIView {
@IBOutlet var backgroundView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit(){
Bundle.main.loadNibNamed("CardContentView", owner: self, options: nil)
self.addSubview(backgroundView)
}
}
是的,我想CardContentView
通过.cardView
class CardView
但是当我运行时,错误弹出class CardView
错误行在func awakeFromNib
具体线路是cardContentView.layer.cornerRadius = 16
。
错误消息是Unexpectedly found nil while unwrapping an Optional value
。特别是,cardContentView = nil
。
我不知道为什么cardContentView = nil
。
我将 Xib 板class CardView
中的 cardContentView 链接到 CardView.swift 中。
我应该如何修改代码来运行它?
谢谢!