Domanda

Sto lavorando su un'applicazione basata su documenti di cacao. Ho una voce di menu nel menu file chiamato "Esporta cose ..." . Questa voce di menu è collegato al primo soccorritore, e richiama un selettore in myDocument . Fin qui tutto bene.

Vorrei cambiare il titolo di questa voce di menu in base alla scelta dell'utente. Se l'utente ha selezionato nulla, si dovrebbe leggere "Esporta tutte le cose ..." , quando l'utente ha alcune cose selezionati si dovrebbe leggere "Esporta Cose selezionato ..." . Quando nessun documento è aperto, dovrebbe basta leggere "Esporta cose ..." .

Dove e quando dovrei cambiare questa voce di menu? Immagino che posso solo cambiare la voce di menu con setTitle:? , ma come faccio a ottenere un riferimento al NSMenuItem

È stato utile?

Soluzione

È possibile implementare -validateMenuItem: nella classe risponditore che le maniglie d'azione della voce di menu. Dovrebbe restituire un BOOL (che indica se l'elemento è abilitata), ma è anche un riferimento al NSMenuItem come un parametro che è possibile utilizzare per modificare il titolo.

Per decidere quale elemento hai a che fare con il menu, è necessario controllare la sua action, per es.

- (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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top