varias superponer studio modificar lineas graficos graficas ejes objective-c cocoa nswindow nswindowcontroller cocoa-sheet

objective-c - studio - superponer graficas en r



¿Por qué mi hoja no está conectada a la ventana para la que se ha ejecutado? (2)

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 lanzamiento). Cuando se requiere la hoja mi controlador llama:

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

que muestra la ventana de la hoja e inicia una sesión modal, pero la ventana tiene una barra de título estándar de Aqua, no está ''conectada'' 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 se "salta" de la ventana para la que se ejecuta, como suelen hacer las hojas cuando se comienzan de esta manera?

Me había preguntado si el hecho de que estaba empezando 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 activar más tarde. Esto no cambió el comportamiento. No he pensado en otra cosa para intentarlo. Estoy apuntando al SDK 10.5, usando Xcode 3.1.

Edición: así que parece que he creado un diálogo modal; las hojas y los diálogos de aplicación-modal se inician con el -beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo: Pero, ¿cómo indico que mi ventana debe ser una hoja y no un diálogo modal?


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

  • Olvidó configurar la salida de la ventana de su controlador de ventana ( el propietario del archivo del archivo Nib). Como lo indica Nathan, puede ver que el método -[NSWindowController window] devuelve nulo.
  • También debe desmarcar la opción Visible al inicio de la hoja.

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