Question

J'ai un fichier avec seulement un xib NSPanel en elle, je suis en train de montrer ce panneau en feuille modale (avec beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:). Le propriétaire du fichier pour cette xib est une classe de contrôleur « MyController » qui a le IBOutlet au NSPanel.

Ce que je cherche quelque chose comme:

...
MyController *controller = [[MyController alloc] init];

[NSApp beginSheet:controller.panel modalForWindow:[NSApp mainWindow] modalDelegate:controller didEndSelector:nil contextInfo:nil];
...

Question: Doit MyController hériter de NSWindowController ou NSObject ?. J'ai essayé NSWindowController et initWithWindowNibName: mais la sortie de NSPanel est toujours nulle.

Merci

Était-ce utile?

La solution

Je le résoudre. Vous devez désactiver presque toutes les propriétés de l'objet de la fenêtre (dans l'IB) que vous utilisez pour la feuille. Ajouter la méthode suivante à mon contrôleur pour afficher la feuille:

- (void)showInWindow:(NSWindow *)mainWindow {
    if (!panelSheet)
        [NSBundle loadNibNamed:@"XibName" owner:self];

    [NSApp beginSheet:panelSheet modalForWindow:mainWindow modalDelegate:nil didEndSelector:nil contextInfo:nil];
    [NSApp runModalForWindow:panelSheet];   //This call blocks the execution until [NSApp stopModal] is called
    [NSApp endSheet:panelSheet];
    [panelSheet orderOut:self];
}

panelSheet est un IBOutlet à la fenêtre de la feuille.

Merci Jon Hess et JWWalker pour votre aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top