2011-03-13 5 views
6

Necesito poder modificar dinámicamente una jerarquía NSMenu cada vez que se muestra (agregar/eliminar elementos, etc.). Por ejemplo:Modificar la estructura de NSMenu en cada apertura?

  1. usuario inicia una sesión de seguimiento en un menú principal y selecciona un submenú
  2. detectar submenú está a punto de abrir y ejecutar código para modificarlo
  3. mantener el seguimiento, las pistas sobre el mismo objeto submenú nuevo : Goto 2

Así que para hacer esto tengo un objeto que implementa el protocoloNSMenuDelegate. El método menúNeedsUpdate funciona la primera vez (2), pero no funciona por segunda vez que se abre el submenú. (Sólo llamadas una vez por sesión de seguimiento)

El método menuWillOpen se llama cada vez, pero tiene documentos tienen la siguiente advertencia que parece descalificar el uso de este enfoque:

No modifique la estructura de la menú o los elementos del menú durante este método .

¿Hay alguna manera de lograr esto?

+0

Creo que necesitas 'NSMenu.update()'? – onmyway133

Respuesta

0

menúWillOpen solo se ejecutará una vez, la primera vez que rastrea el submenú. En ese punto, llenas el menú.

Después de eso, menuWillOpen no se volverá a llamar. Sin embargo, cualquier cambio en el menú ocurrirá en vivo. Por lo tanto, mientras el menú principal principal está abierto, siempre que los datos de origen cambien (o periódicamente si no puede detectar cambios), actualice el menú utilizando la API de NSMenu normal.

Asegúrese de que cualquier método que use para actualizar el menú se ejecutará mientras el sistema rastrea su menú.

Cuestiones relacionadas