2009-03-22 9 views
25

Tengo un NIB que contiene dos ventanas, una es la ventana principal de la aplicación visible en el lanzamiento y la otra es una hoja personalizada (y, por lo tanto, no está visible en el inicio). Cuando se requiere la hoja de mis llamadas controlador:¿Por qué no está adjuntada mi hoja a la ventana para la que se ejecuta?

[NSApp beginSheet: sheetWindow modalForWindow: mainWindow modalDelegate: self didEndSelector: @selector(didEndSheet:returnCode:contextInfo:) contextInfo: nil];

que muestra la ventana de la hoja y se inicia una sesión de modal, pero la ventana tiene una barra de título estándar de la aguamarina, no está 'conectado' a la ventana principal y se puede mover como una ventana normal. No hace falta decir que esto no es deseable :-). ¿Por qué la ventana de la hoja no aparece en la ventana en la que se ejecuta, como suelen hacerlo las hojas cuando se comienza de esta manera?

Me he preguntado si el hecho de que estaba comenzando la hoja dentro del controlador -awakeFromNib podría tener un efecto, así que moví la hoja a la acción de un botón que podría disparar más tarde. Esto no cambió el comportamiento. No he pensado en otra cosa para probar. Me estoy enfocando en el 10.5 SDK, usando Xcode 3.1.

Editar: por lo que parece que he creado un diálogo modal; las hojas y los diálogos de la aplicación modal se inician con el método -beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:. ¿Pero cómo indico que mi ventana debe ser una hoja y no un diálogo modal?

+0

Compruebe que mainWindow no sea nulo. –

+0

No veo nada malo al respecto, tal vez algún contexto podría ayudar. –

+0

Deberías hacer una respuesta, Nathan. Es casi seguro cierto. – Chuck

Respuesta

17

Si mainWindow es nulo, la hoja se mostrará como una ventana/diálogo.

90

Esto me sucedió hace un par de días:

  • se le olvidó preparar la ventana salida de su controlador de ventana (propietario de archivo del archivo NIB). Según lo indicado por Nathan, puede ver que el método -[NSWindowController window] devuelve nulo.
  • También debe desmarcar Visible en el lanzamiento opción de la hoja.
+18

"Visible en el lanzamiento" resultó ser mi problema: la hoja apareció en el momento correcto, pero desconectada de su ventana, y no desaparecería a pesar de mi ordenOut: call. ¡Gracias por publicar esto! –

+12

"Visible en el lanzamiento" fue de hecho mi problema, también. Respuesta muy útil. – Monolo

+3

¡Visible en el lanzamiento también era mi problema! – logancautrell

Cuestiones relacionadas