0

Cocoa ドキュメント ベースのアプリケーションに取り組んでいます。「Export Things…」という名前のファイルメニューにメニュー項目があります。このメニュー項目はファーストレスポンダーに接続され、MyDocumentのセレクターを呼び出します。ここまでは順調ですね。

ユーザーの選択に応じて、このメニュー項目のタイトルを変更したいと思います。ユーザーが何も選択していない場合は"Export All Things…"と表示され、ユーザーが何かを選択している場合は"Export Selected Things..." と表示されます。ドキュメントが開いていない場合は、「Export Things…」と表示されます。

このメニュー項目はいつ、どこで変更すればよいですか? setTitle :を使用してメニュー項目を変更できると思いますが、NSMenuItem への参照を取得するにはどうすればよいですか?

4

1 に答える 1

5

-validateMenuItem:メニュー項目のアクションを処理するレスポンダー クラスに実装できます。BOOL (アイテムが有効かどうかを示す) を返す必要がありますNSMenuItemが、タイトルを変更するために使用できるパラメーターとして への参照も取得します。

どのメニュー項目を扱っているかを判断するには、その を検査する必要がありますaction

- (BOOL)validateMenuItem:(NSMenuItem *)item {
  if ([item action] == @selector(export:)) {
    if (hasSelection) {
      [item setTitle:NSLocalizedString(@"Export Selected Things",nil)];
    } else {
      [item setTitle:NSLocalizedString(@"Export All Things",nil)];
    }
  }
  return YES;
}
于 2011-01-17T09:15:42.077 に答える