2009-09-10 23 views
15

en aplicaciones de cacao, a menudo se ve un pequeño punto rojo en el botón de cierre de la ventana cuando se tiene datos no guardados; TextEdit es un buen ejemplo de esto. He estudiado minuciosamente la documentación de Cocoa, pero no puedo encontrar una forma de establecer programáticamente este estado. Estoy seguro de que hay una manera realmente fácil de hacerlo, pero obviamente me falta algo.¿Cómo se cambia el estado del botón para cerrar la ventana en Cocoa?

Respuesta

15

Para establecer mediante programación, puede utilizar el método de NSWindow -setDocumentEdited:. Si está escribiendo una aplicación basada en documentos, NSDocumentManager debería detectar automáticamente cuando hay cambios no guardados en el NSUndoManager asociado con el NSDocument actual.

13

depende de qué tipo de aplicación que se cree. Si se trata de NSDocument basada, utilice updateChangeCount: método NSDocument 's. Si acaba de obtener un NSWindowController, use setDocumentEdited:. NSWindow tiene un método setDocumentEdited: si todo lo que tienes es la NSWindow.

9

Además, en el 10,6, el 'setDocumentEdited' marca la solicitud como sucia, y por lo tanto no puede haber matado rápido. Si no se llama a esto, y establece el indicador en el Info.plist (ver What's New in 10.6)

<key>NSSupportsSuddenTermination</key> 
<string>YES</string> 

De esa manera, si su aplicación se está ejecutando (pero no está sucio) a continuación, Mac OS X puede simplemente matar en lugar de invocar solicitudes de cierre educado. Si su (s) documento (s) está (n) marcado (s) sucio (o la ventana), pasará por el proceso normal de apagado de la aplicación para apagarlo.

Cuestiones relacionadas