Pregunta

Estoy escribiendo una aplicación con una ventana principal que se muestra cuando se inicia la aplicación.Cuando la ventana está cerrada, me gustaría que la aplicación permanezca en funcionamiento (con un menú de barra de menú), y si el usuario vuelve a hacer clic en el icono de Dock, me gustaría que la ventana principal se presentara de nuevo.

Estoy alrededor del 90% del camino allí: mi aplicación se mantiene correctamente correctamente después de que la ventana principal se cierre con CMD-W, y como "liberación cuando está cerrada" no está marcada, la ventana podría ser [makeKeyandorderfront: edPara mostrarlo nuevamente cuando se haga clic en el icono del Dock.

La única pieza faltante de este rompecabezas está interceptando el icono de Dock-icono real.

Los otros hilos sobre este tema recomiendan implementar cualquiera de las aplicacionesHoulDherLereopen: hostelibleWindows: o aplicacionesHoulDOulDOulDopEnTitledFile: En el controlador de la ventana.He hecho ambos, y ninguno de los dos se llama.

¿Alguna otra idea?

¿Fue útil?

Solución

Los otros hilos sobre este tema recomiendan implementar las aplicaciones de las aplicacionesHoulDhanLereopen: hostelibleWindows: o aplicacionesHowouTouDOulDopEnuntitledFile: En el controlador de la ventana.

Eso solo es cierto si el controlador de la ventana es el delegado de la aplicación. Ese es el objeto al que la aplicación envía esos mensajes. Sin embargo,

no haría un controlador de ventana el delegado de la aplicación. Normalmente los hago dos objetos separados. Haga un objeto específicamente para ser del delegado de la aplicación, y cuando ese objeto recibe los mensajes de delegado relevantes, envíe un mensaje a su controlador de ventana que le indique que haga lo que necesita hacer.

En realidad, lo que suelo hacer en las aplicaciones de una sola ventana es hacer que el delegado de la aplicación cree y posee el controlador de la ventana. Puede responder al cierre de la ventana desechando el WC y responda a Reopen comprobando si tiene un WC y creando uno (y, por lo tanto, reabriendo la ventana) si no lo hace.

Otros consejos

Use [NSApp setDelegate:self]; en awakeFromNib.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top