Pregunta

Estoy trabajando en una aplicación basada en el documento de cacao. Tengo un elemento de menú en el menú archivo llamado "Exportar cosas ..." . Este elemento de menú se conecta al primer nivel de respuesta, y llama a un selector en la Mi Documento . Hasta aquí todo bien.

Me gustaría cambiar el título de este elemento de menú en función de la selección del usuario. Si el usuario ha seleccionado nada, debe decir "Exportar todas las cosas ..." , cuando el usuario tiene algunas cosas seleccionan debería leer "Export Selected cosas ..." . Cuando no hay ningún documento abierto, se debe simplemente leer "Exportar cosas ..." .?

¿Dónde y cuándo debo cambiar este punto de menú? Calculo que sólo puede cambiar el elemento de menú con setTitle:? , pero ¿cómo puedo obtener una referencia a la NSMenuItem

¿Fue útil?

Solución

Se puede aplicar -validateMenuItem: en la clase de respuesta que los mangos de la acción del elemento de menú. Se debe devolver un BOOL (que indica si el elemento está activado), pero también obtener una referencia a la NSMenuItem como un parámetro que se puede utilizar para cambiar el título.

Para decidir qué elemento se está tratando con menú, usted debe inspeccionar su action, por ejemplo.

- (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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top