5

enabledのブールプロパティをNSTextFieldの状態にバインドしたいと思いNSButtonます。NSValueTransformerの状態をに変換するカスタムを追加してみNSButtonましたNSNumber。ただし、そのシナリオでは、何らかの理由でテキストフィールドが常に無効になっています。私の2番目のアプローチ: 。NSValueTransformerなどのリターンプリミティブタイプを提供していないため、tobadも失敗しますBOOL

例:
スクリーンショットは、チェックボックスの状態がであるためにテキストフィールドが無効になっている例を示していますNSOnState。また、ラベルをこの状態にバインドしたいと思います。

無効なテキストフィールド

さらに、 InterfaceBuilderで「無効なテキスト」を設定できれば便利です。上記の例では、関連するクラスにテキストを設定します。


編集:

アカウントテキストフィールドのenabledプロパティのモデルキーパスself.anonymousLoginCheckbox.stateとして設定しました。パスワードテキストフィールドについても同様です。ただし、動作しませ

InterfaceBuilderバインディング


アップデート:

私はGitHubで利用可能なサンプルプロジェクトを作成し、NicolasBachschmidtによって親切に説明された実装を示しました。

4

1 に答える 1

15

NSButtonキーのKVOに準拠していませんstate。Cocoaバインディングでは、監視対象のプロパティが変更されたときに、監視対象のオブジェクトが通知を発行する必要があります。NSButton'sはそのstateセルの単なるラッパーであるためstate-[NSButton setState:]ユーザーがボタンをクリックしてもメソッド(および自動KVO通知)は呼び出されません(ただし呼び出されます-[NSCell setState:])。モデルキーパスをに設定するself.anonymousLoginCheckbox.cell.stateと、機能します。

于 2012-07-02T18:30:41.883 に答える