Cocoa ドキュメント ベースのアプリケーションで、メニュー バーのメニュー項目の状態を現在表示されているドキュメントと同期させる最善の方法は何ですか?
たとえば、[定規を表示] (オフ状態) および [定規を非表示] (オン状態) メニュー項目を使用して非表示/表示できる定規ビューを含むドキュメントがあるとします。ユーザーは同時に 2 つのドキュメントを開いています。彼/彼女は 1 つの文書では定規を非表示にしましたが、別の文書では非表示にしていません。ユーザーがドキュメント間を移動するとき、メニュー項目は、アプリケーション全体ではなく、そのドキュメントの状態を反映する必要があります。
どうすればこれをきれいに行うことができますか?私はグーグルで検索しましたが、これを行うための事前定義された「すぐに使える」方法があるようには見えません。NSDocument に、そのようなロジックを追加できる「didRegainFocus」タイプのメソッドがあればいいのですが。
実際の実装は、これらの特定のメニュー項目を扱う NSDocument 内の NSViewController であるため、少しトリッキーです。
@interface MyDocument : NSDocument {
SomeViewController *myCustomizedTextViewController;
}
MyDocument
が現在アクティブなドキュメントである場合、アプリケーションのメイン メニューでいくつかの の状態を確認するためのメソッドが必要ですmyCustomizedTextViewController
。NSMenuItem
一人は正真正銘の支配者です。もう 1 つは同様の一時的な設定です。