我有一个实现 NSCoding 并持有对 UIView 对象的引用的类...
class A: NSObject, NSCoding {
var view: UIView!
init(view: UIView) {
super.init()
commonInit(view)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit(/* <Need to pass the existing view somehow> */)
}
override func encodeWithCoder(aCoder: NSCoder) {
super.encodeWithCoder(aCoder)
}
}
传递的view
是一个特殊的重量级自定义视图类,我不需要序列化。有很多A
对象,它们都引用了相同的 custom UIView
。但是在状态恢复期间,我需要引用它来恢复A
. 该view
实例在我需要的时候已经存在,并且我的自定义 UIViewController 实际上启动了解码序列:
override func decodeRestorableStateWithCoder(coder: NSCoder) {
// How to get self.customView to A.init?(coder aDecoder: NSCoder) where
// it is needed?
let view = self.customView
self.a = coder.decodeObjectForKey("aKey") as! A
}
但是我怎样才能使现有视图可供使用A.init?(coder aDecoder: NSCoder)
?