Question

Je travaille sur une application de documents Cocoa. J'ai un élément de menu dans le menu fichier nommé "Export choses ..." . Cet élément de menu est relié au premier répondeur, et appelle un sélecteur MyDocument . Jusqu'à présent, si bon.

Je voudrais changer le titre de cet élément de menu en fonction de sélection de l'utilisateur. Si l'utilisateur n'a rien choisi, il faut lire « Exporter toutes choses ... » , lorsque l'utilisateur a sélectionné certaines choses il faut lire « Exporter la sélection Choses ... » . En l'absence de document est ouvert, il devrait simplement lire "Export choses ..." .

Où et quand dois-je modifier cet élément de menu? Je me dis que je peux changer l'élément de menu à l'aide setTitle: , mais comment puis-je obtenir une référence au NSMenuItem

Était-ce utile?

La solution

Vous pouvez mettre en œuvre -validateMenuItem: dans la classe répondeur que les poignées d'action de l'élément de menu. Elle doit retourner un BOOL (qui indique si l'élément est activé), mais vous obtenez également une référence au NSMenuItem en tant que paramètre que vous pouvez utiliser pour changer le titre.

Pour décider quel élément Menu, vous dealing avec, vous devriez inspecter son action, par exemple.

- (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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top