2016-05-07 4 views
0

カスタムNSViewのプロパティをカスタムNSViewから別のNSViewにバインドしようとしています。両方のプロパティは単純なブール値です。カスタムNSViewをカスタムNSObjectにバインドする最良の方法

カスタムバインディングの初心者として、Apple Documentationを読んで、stackoverflowで検索しました。

だから私は、カスタムNSViewのカスタムNSObjectのを作成し、呼ばれるブールプロパティを追加し、両方に「有効」とそれらを結合し[myCustomView bind:@"enabled" toObject:myObject withKeyPath:@"enabled" options:nil];

私のCustomViewはアプローチを使用した値の変更を通知し、防ぐために、この記事http://www.tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings/で説明メモリは問題を保持します。

私のアプリを起動しました。素晴らしい...しかし、それは唯一の方法バインディングです!カスタムビューのプロパティが更新されない(Grrrr)

私は私のところまで私のカスタムビューをクリックすると、カスタムオブジェクトのプロパティが更新されます(右)カスタムバインディングを理解している場合は、手動でbind:toObject:withKeyPath:optionsを実装し、オブザーバを登録してプロパティの値の変更を追跡し、Tom Dallingのアプローチでは逆のことを言います。

したがって、私のプロパティを双方向にバインドする最良の方法は何ですか?

+0

を参照してください。 –

+0

カスタムオブジェクトのプロパティの値をKVOに準拠した方法で変更しますか? – Willeke

+0

kvoに準拠した方法でプロパティの値を変更することはどういう意味ですか?オブザーバーを登録することによって? – miosepayo

答えて

0

このように、hereは、逆の対称バインディングを設定するだけであることを示しています。私はこれを試していないが、次のように動作するように聞こえる。

[myObject bind:@"enabled" toObject:myCustomView withKeyPath:@"enabled" options:nil]; 
+0

私は既に対称バインディングを設定しようとしましたが、動作しません。 – miosepayo

0

私の知る限りでは、カスタムバインディングを理解できるように、アップルの勧告を手動でバインド実装することですので、私は少し困惑している:toObject:withKeyPath:オプションとプロパティの値の変化を追跡するためにオブザーバーとトムDallingのアプローチを登録反対側は言う。

両方を実装する必要があります。 myObject.enabledが変更されたときには、myCustomView.enabledを変更することができるので、キーパスを "有効"にしてmyObjectを観察する必要があります。 myCustomView.enabledが変更された場合、myObject.enabledを設定する必要があります。

は「私が何かをすることの二つの方法を聞いた。私はそれらのいずれかを試してみました、それは動作しませんでした。今、私はすべてのアイデアのうちのよ!」Responding to Changes

関連する問題