0

コンテキスト依存の [ファイル] メニューのサブメニューを備えたドキュメント ベースのアプリがあります。私はそれを管理するための適切な方法を見つけようとしています.答えはわかっていると思います...しかし、明白/単純なものを見逃していないことを確認したい.

ドキュメントには、NSWindowControllerドキュメントごとにインスタンス化された がありNSWindowDelegate、そのインスタンスの です。NSWindowControllerとメソッドでは-init-deallocを作成および削除できますNSMenu。しかし、メニューはアプリに対してグローバルであり、個々のドキュメントに固有のものではないため (または私が思うに)、メニューを削除して、and (またはおそらく類似のNSWindowDelegate.. .キーメソッド、私はその区別について少し曖昧です)-windowDidBecomeMain-windowWillResignMain

さらに、実装するために、 のデリゲートNSWindowControllerを作成する必要があります(同様に、デリゲートを現在アクティブな.NSMenu-menuNeedsUpdateNSWindowController

これは正しいアプローチですか?

4

1 に答える 1

0

私が状況依存のメニューに使用してきたトリックの 1 つは、validateMenuItem を使用して menuItems を検証するだけでなく、それ以上のことを行うことです。

あなたの場合、アプリケーションにメニューのデリゲートを委任させ、validateMenuItem 内で、メニュー項目が変更する必要がある場合は、変更することができます。[NSDocumentManager sharedManager] を呼び出して、現在アクティブなドキュメントのインスタンスを取得し、そこから必要な情報を取得してメニュー項目に入力します。

于 2012-09-26T17:47:08.670 に答える