【发布时间】:2017-02-27 17:24:49
【问题描述】:
我试图在我的代码中实现一个单例 UIView 实例,所以每当我创建一个“MyView”实例时,nib 文件只会加载一次,然后再次重用它:
class MyView : UIView {
@IBOutlet weak var someLabel: UILabel!
static var customeView : UIView = {
let view = Bundle.main.loadNibNamed(String(describing: MyView.self), owner: self, options: nil)?[0] as! UIView
return view
}()
convenience init() {
self.init(frame: CGRect(x: 0, y: 0, width: 576, height: 30))
let viewForOnce = MyView.customeView
viewForOnce.frame = bounds
}
}
问题是,每当我调用 MyView.customeView 时,它都会崩溃说“此类不符合键值编码”,我认为这是因为计算属性中的“所有者:自我”而发生的。
任何帮助将不胜感激。
【问题讨论】:
-
this class is not key value coding-compliant通常是 Interface Builder 问题,您可以在惰性初始化属性中使用self -
我特别仔细检查了这一点,一切都已连接!我特别仔细检查了这个,一切都已连接!但如果我把 owner: MyView () 而不是 owner: self 那么它会工作!
-
为什么你真的需要这种行为?为什么不在 MyView 类中添加
ReceiptView?顺便说一句,您所做的与单例模式无关。 -
我的意思是单例在我创建该类的实例时只加载一次笔尖。 ReceiptView 现在是错误的 MyView。
标签: ios swift computed-properties