【发布时间】:2019-03-25 11:44:11
【问题描述】:
我正在练习 awakeFromNib。
我在 Main.storyboard 中有一个 UIView。
这个 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,它继承了默认的 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)
}
}
是的,我想通过 class CardView 在 ViewController 中显示 CardContentView 到 cardView。
但是当我运行时,class CardView中弹出错误
错误行在func awakeFromNib
具体的线路是cardContentView.layer.cornerRadius = 16。
错误消息是Unexpectedly found nil while unwrapping an Optional value。特别是cardContentView = nil。
我不知道为什么cardContentView = nil。
我将 Xib 板上的 cardContentView 链接到 CardView.swift 中的 class CardView。
我应该如何修改代码来运行它?
谢谢!
【问题讨论】:
-
故事板不加载 xibs。
-
@Sulthan 感谢您的评论。你的意思是我需要在 ViewController 中启动“var cardView”?还是别的什么?
标签: swift awakefromnib