2

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)でしょうか?

4

0 に答える 0