質問

私はココアドキュメントベースのアプリケーションに取り組んでいます。ファイルメニューに名前が付けられたメニュー項目があります 「物事をエクスポートする…」. 。このメニュー項目は最初のレスポンダーに接続されており、 mydocument. 。ここまでは順調ですね。

ユーザーの選択に応じて、このメニュー項目のタイトルを変更したいと思います。ユーザーが何も選択していない場合、読む必要があります 「すべてのものをエクスポートする…」, 、ユーザーが選択したものをいくつか持っているとき、それは読むべきです 「選択したものをエクスポートする…」. 。ドキュメントが開いていない場合は、読むだけです 「物事をエクスポートする…」.

このメニュー項目をどこで変更すればよいですか?私はメニュー項目を使用して変更できると考えています Settitle:, 、しかし、どうすればnsmenuitemへの参照を取得できますか?

役に立ちましたか?

解決

実装できます -validateMenuItem: メニュー項目のアクションを処理するレスポンダークラス。ブール(アイテムが有効になっているかどうかを示す)を返す必要がありますが、 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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top