Modal session nécessite fenêtre modale
-
13-12-2019 - |
Question
Je suis en train d'ouvrir une fenêtre comme une feuille de sorte qu'il s'affiche en bas de la barre d'outils.J'ai utilisé le O'Reilly tutoriel pour ce faire.Cependant, je peux sortir de cette erreur:Modal session exige de la fenêtre modale.
La fenêtre de la charge de la fenêtre, si j'ai "Visible Au Lancement" est cochée.
Si elle est cochée ou non-je obtenir le "Modal session nécessite fenêtre modale" erreur.
J'ai une Fenêtre.xib, ProgressModal.xib.
Dans la Fenêtre mise en œuvre de fichier que j'ai utiliser:
-(IBAction)loadProgress:(id)sender{
[self progressStatus:progressWindow];
}
- (void)progressStatus:(NSWindow *)window {
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
[NSApp runModalForWindow: window];
[NSApp endSheet: window];
[window orderOut: self];
}
- (IBAction)cancelProgressScrollView:(id)sender {
[NSApp stopModal];
}
J'ai peut-être la ProgressModal.xib installation de mal.J'ai un NSObject qui a "Fenêtre" comme sa classe.Toutes les connexions sont faites à travers cela.
Mais encore une fois, il charge la fenêtre juste de ne pas charger comme un modal.
Des idées?
La solution 2
Comme je l'ai dit ci-dessus, j'ai glissé un objet dans la fenêtre ProgressModal et j'ai fait mes connexions à travers cela.Ce que j'aurais dû faire a été fait le propriétaire du fichier ma classe de fenêtre.Changer cela corrigé le problème.
J'ai eu ceci depuis http://www.youtube.com/watch?v=QBKO6TD-FWA
Autres conseils
Placez le code suivant dans la première ligne de votre progressStatus
méthode:
NSLog(@"%@", window);
Si vous voyez le journal de sortie est nulle, ce qui est la raison pourquoi.
Étapes pour créer un modal de la feuille à l'aide de XIB:
- Faites glisser un panneau à votre MainMenu.xib
- Ajouter
@property (assign) IBOutlet NSPanel *sheetPanel;
dans votreAppDelegate.h
fichier @synthesize sheetPanel = _sheetPanel;
dans leAppDelegate.m
fichier- Lien d'une Nouvelle Prise de Référencement du panneau dans le MainMenu.xib créé à l'étape 1 de la sheetPanel propriété créé à l'étape 2.
À l'aide de code suivant pour afficher la feuille modale:
[NSApp beginSheet:_sheetPanel modalForWindow:_mainWindow modalDelegate:self didEndSelector:@selector(didEndSheet:returnCode:contextInfo:) contextInfo:nil];
Edit: J'ai supposé que vous vouliez une fenêtre modale.Si vous voulez une feuille, n'utilisez pas du tout runModalForWindow:
.
Essayez ceci:
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
C'est une bonne idée de définir un rappel au cas où vous en auriez besoin;E.g.
[NSApp beginSheet: window
modalForWindow: mainWindow
modalDelegate: self
didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo: nil];