Cocoa アプリケーションで、UI と他の要素の状態を同期させるための標準パターンはありますか? たとえば、メインのメニューをあるクラスで管理し、ツールバーを別のクラスで管理しています。一部のメニュー項目は、ツールバーの現在の選択内容を反映する必要があり、その逆も同様です。これを処理するには、メニュー項目とツールバー項目によってセレクターをトリガーして通知を発生させます。制御クラスはこれらにサブスクライブし、選択に一致するように UI を更新します。これはこれを行う良い方法ですか、それとも Cocoa でこれを行う他の自然な方法がありませんか?
質問する
191 次
1 に答える
0
アイテムを有効にするか無効にするかという特定のケースでは、ターゲット(またはターゲットがファーストレスポンダーの場合は暗黙のターゲット)に任せる必要があります。そのためにユーザーインターフェイス検証を使用する必要があります。
バインディングは別の良いテクニックです。UIを管理する状態は、モデルまたはコントローラーのいずれかにあり、UIはそれにバインドされている必要があります。(UIをモデルにバインドする場合は、コントローラーを介してバインドする必要があります。)このようにすると、状態が最新で一貫していることを確認するだけで、他のすべてが自動的に行われます。
しかし、あなたが説明するテクニックは良い3番目のオプションです。モデルは、変更されたときにコントローラーレイヤーに通知(スルーNSNotifications
またはデリゲート)を提供する必要があります。コントローラーレイヤーはそれらを監視し、状態の変化がUIにどのような影響を与えるかについての深い知識を持ち、準拠するようにUIを明示的に構成します。
于 2012-05-10T01:58:01.530 に答える