7
votes

Comment montrer un nspanel comme une feuille

J'essaie de montrer un nspanel comme une feuille. Je fais naïvement quelque chose sur ces lignes: XXX

Pour une raison quelconque qui me échappe, cela ne fonctionne pas. Lorsque cette partie du code est appelée, la feuille clignote momentanément (en raison du message Autoréleuillet ). La feuille n'est jamais accrochée à la fenêtre.

Si quelqu'un peut me signaler où je peux trouver plus d'informations, cela serait très apprécié.


0 commentaires

3 Réponses :


2
votes

Oui, vous devez posséder ce contrôleur aussi longtemps que vous le souhaitez de continuer à fonctionner. Vous ne pouvez pas simplement le créer, le permettez-y et de le laisser mourir - vous devez le tenir aussi longtemps que vous en avez besoin.


2 commentaires

En supprimant le message Autoréleuillet empêche le panneau de disparaître, il n'est toujours pas accroché à la fenêtre ... Je suis vraiment perplexe par cela.


Il ne suffit pas de simplement ne pas l'autoriser. C'est juste une fuite. Vous devez posséder ce que vous avez créé et le relâcher lorsque vous en avez terminé (et seulement alors). En ce qui concerne l'accrochage du contrôleur sur la fenêtre, vous devez vous assurer que vous avez défini la classe du propriétaire du fichier, puis connectez la fenêtre de votre contrôleur à la fenêtre. Vous faites tous les deux ceux de IB.



17
votes

Cela ressemble à un cas classique d'avoir vérifié la case "visible au lancement" pour le panneau dans IB. Tourner ça.


0 commentaires

1
votes

N'oubliez pas que si vous essayez de courir cela comme une feuille "modale" (c'est-à-dire, il reprend l'application jusqu'à ce que l'utilisateur le rejette), vous devez appuyer sur une nouvelle boucle d'exécution.

Ce que vous avez fait est montré la feuille, puis non enfoncé une nouvelle boucle, le système d'exploitation montre donc la feuille, voit qu'il n'y a aucune raison de le maintenir en marche et la ferme ainsi et reprend l'exécution sur la ligne suivante. : p>

i typiquement des feuilles de la manière suivante: p> xxx pré>

puis, dans vos routines de bouton Accepter et / ou d'annulation: P>

- (IBAction)continueButtonClicked:(id)sender
{
    UNUSED(sender);
    [[NSApplication sharedApplication] stopModal];
    [createAccountWizardPanel orderOut: nil];
    [[NSApplication sharedApplication] endSheet: createAccountWizardPanel
                                       returnCode: NSOKButton];

}


1 commentaires

Cette méthode est obsolète :(