Estoy tratando de crear una ventana modal y aquí está el código que tengo hasta ahora:

NSWindowController *modalSheet = [[NSWindowController alloc]
initWithWindowNibName:@"MyCustomWindow" owner:self];

[NSApp beginSheet:[modalSheet window]
 modalForWindow:[self windowForSheet]
  modalDelegate:nil
 didEndSelector:nil
    contextInfo:nil];

Aparece la ventana que bien, pero no es modal, por ejemplo, usted todavía puede hacer cosas a la ventana principal donde las solicitudes proceden. Este método es llamado desde un NSDocument objeto.

He tratado de leer: El Uso Personalizado De Hojas

Sin embargo no estoy seguro de lo myCustomSheet es que no se declara en ningún sitio. Supongo que es un NSWindow variable de instancia.

Simplemente no puedo entender por qué no es modal. Cualquier ayuda sería muy apreciada. Gracias

OriginalEl autor jdelaune | 2011-01-01

3 Comentarios

  1. 5

    Espero que esto ayude.
    Para ejecutar la ventana controlador siempre modal. Crear una subclase de NSWindowController y agregar estos dos métodos.

    - (void)windowDidLoad
    {
        [super windowDidLoad];
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//TODO
            [[NSApplication sharedApplication] runModalForWindow:self.window];
        });
    }
    
    - (void)windowWillClose:(NSNotification *)notification
    {
        [[NSApplication sharedApplication] stopModal];
    }

    OriginalEl autor ZevsVU

  2. 0

    Tiene por casualidad tienes worksWhenModal conjunto para YES? Esto podría causar exactamente el comportamiento de describir, ya que es el propósito de la misma.

    Con respecto a envolver el panel (usted está usando un NSPanel, ¿verdad?) en la ventana controlador, usted no necesita. De hecho, me acabo de hacer mis hojas sin una ventana del controlador. ¿Tiene alguna lógica personalizada en la ventana controlador que necesita? AppKit gestiona por usted.

    Lamentablemente no, la lectura en otros lugares parece que no se puede iniciar windows desde un archivo xib a través de NSWindowController. Así que tengo que averiguar cómo obtener un archivo xib carga a través de NSBundle en un NSWindow.
    ¿Usted realmente necesita el XIB? Me molesta cómo la documentación que a menudo hace que parezca que la única manera de hacer algo es a través de una interface builder, cuando la realización de una ventana sin IB es realmente simple. De hecho, me acabo de hacer mis hojas sin una ventana del controlador. ¿Tiene alguna lógica personalizada en la ventana controlador que necesita? AppKit gestiona por usted.

    OriginalEl autor d11wtq

Dejar respuesta

Please enter your comment!
Please enter your name here