Comment feuille de spectacle chargé à partir xib? (Mac OS X)
-
29-09-2019 - |
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
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