隠さ観察するための簡単なKVO例:
class SDKViewController : UIViewController {
private var context = 0
private var observingView: UIView?
func initialize(view: UIView) {
removeObservations()
observingView = view
// start observing changes to hidden property of UIView
observingView?.addObserver(self, forKeyPath: "hidden", options: [.New], context: &context)
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let newValue = change?[NSKeyValueChangeNewKey] as? Bool where context == &self.context {
print("hidden changed: \(newValue)")
}
}
// this is called by deinit
// it should also be called if they can deregister the view from your SDK
func removeObservations() {
if let view = observingView {
view.removeObserver(self, forKeyPath: "hidden")
observingView = nil
}
}
deinit {
removeObservations()
}
}
これはあなたの構成に関するいくつかの仮定をしているが、あなたは多くのビューの初期化を許可している場合、あなたは簡単に調整することができます。
また、スウィフトにはないKVOControllerをFacebookで使用すると、これがより簡潔になります。
編集:ちょっとメモしてください。はKVOで動作しますか?
編集#2:SDKViewControllerに更新YourSDKClass(NSObjectの - >のUIViewController)
'hidden'を使用した例でありますか?詳細を示し、コードをいくつか示してください – Wain
クラス "A"のプロパティが、クラス "B"で何か起こることの価値を変えるとき、それを意味しますか? –
@Peter M - そうです。 –