2011-07-21 16 views
5

Soy un principiante completo en Objective-C y Cocoa.Aplicación de cacao sin ventanas

Me gustaría crear una aplicación sin ventana, que solo muestra un NSStatusItem en la bandeja del sistema. La bandeja funciona bien, sin embargo, hay un problema.

Por alguna razón, mi aplicación crea automáticamente una ventana para mí, que no quiero.

Pensé que fue causado por la plantilla automática de Interface Builder creada cuando creé la aplicación en Xcode, por lo que eliminé el archivo .nib del proyecto. Sin embargo, la ventana aún se crea.

Las únicas líneas que contienen una referencia a la ventana se encuentran en la cabecera:

NSWindow *window; 
@property (assign) IBOutlet NSWindow *window; 

y en el archivo de implementación:

@synthesize window; 

Ambos se añadieron de forma automática, no he escrito esto.

¿Cómo puedo evitar que la aplicación cree una ventana? Incluso traté de eliminar todas las referencias a window del código, incluido el NSWindow *window, pero la ventana aún se creó.

Mi arreglo temporal en este momento es llamar al [window close]; en la aplicación, pero seguramente hay una manera mejor?

Respuesta

8

Mi sospecha es que nada en el código es la creación de la ventana. Cuando crea una nueva aplicación Cocoa Xcode, Xcode configura un XIB con su interfaz para usted. Abra MainMenu.xib (debe estar en Recursos) en el constructor de interfaces y elimine la ventana que arroja por defecto.

+0

Sí, eso fue lo que pensé. Eliminé todo el archivo .xib, pero todavía aparece ... – houbysoft

+0

Recién recreé el proyecto, y esta vez eliminé la ventana dentro del .xib y no todo el xib y funcionó. Gracias .. – houbysoft

+0

Genial. Cuando eliminó el XIB, es posible que el binario de la aplicación existente mantuviera el XIB compilado antes de eliminarlo. De esa manera, el XIB esencialmente aún existía. De todos modos, me alegra saber que lo entendiste! –

4

Si no desea mostrar una ventana, puede considerar ejecutar su aplicación en segundo plano. Eso detendrá la ventana para aparecer.

Con el fin de ejecutar la aplicación en segundo plano, ajuste YES a "aplicación sólo es fondo" en el archivo de la aplicación PLIST

+0

Lo intenté también. La ventana aún aparece. – houbysoft

0

Devuelve falso en su subclase NSDocument 'método WindowNibName.

Cuestiones relacionadas