4

アプリのメニューに問題があります。BOOLいくつかの変数に応じて、メニューのいくつかの項目をグレー表示にします。

また、いくつかのメニュー項目にいくつかのBOOL変数に応じて名前を付け、それによってメニュー項目の名前に応じて異なる機能を実行したいと思います。これは可能ですか?Interface Builderを使用する場合、メニュー項目を1つのIBActionメソッドにリンクできます。これを行う方法を教えてください。

ありがとう

4

3 に答える 3

4

NSMenuValidationプロトコルを参照してください。

-validateMenuItem:を実装します。これは、メニュー項目を有効にするか無効にするかを決定するために使用されます。メニューがポップアップする直前に、メニュー項目ごとに呼び出されます。

于 2009-09-10T23:59:10.793 に答える
1

はい。メニュー項目の有効状態とそのタイトルをプログラムで設定できます。NSMenuItemのドキュメントを参照してください。NSLocalizedStringタイトル形式を取得するときに使用することを忘れないでください。

于 2009-09-11T03:32:07.373 に答える
0

2番目の質問について。メニュー項目のターゲット/アクションを接続するためにInterfaceBuilderを使用する必要はありません。

次のようなコードを使用できます。

NSMenuItem *menuItem; // Set this to your menu item.
// Set the target to an instance of a class which contains the action method.
[menuItem setTarget:targetClass]; 
// Set the action to the (IBAction) method to call.
[menuItem setAction:NSSelectorFromString(@"actionMethod")]; 
于 2009-09-11T09:42:34.173 に答える