Initialiser une fenêtre

UniXUniX Membre
15:23 modifié dans API AppKit #1
Salut.

J'ai un menu qui m'ouvre une fenêtre avec le code suivant :
- (IBAction)importerImage:(id)sender<br />{<br />	if (!importController)<br />	{<br />		importController = [[ImportController alloc]init];<br />	}<br />	[importController showWindow:self];<br />}<br />


Lorsque je ferme cette fenêtre, et que la réouvre par le menu, je voudrais pouvoir y faire des initialisations. importController est le delegate de cette fenêtre, mais je n'ai pas réussi à  trouver de méthode delegate qui s'active dans mon cas.

Comment dois-je m'y prendre ?

Réponses

  • AntilogAntilog Membre
    15:23 modifié #2
    importController est le windowController, non?

    Dans ce cas, il n'y a que lui qui ouvre la fenêtre IMHO.

    Il a lui-même les méthodes windowWillLoad et windowDidLoad.

  • UniXUniX Membre
    15:23 modifié #3
    Oui, importController est le windowController, et effectivement je peux initialiser la fenetre dans le windowDidLoad, ce que je fais.
    Mais, pour refermer cette fenêtre, je clique sur la case de fermeture, ou bien sur un bouton qui envoie :
    [[self window]close]
    


    Lorsque ensuite, je réouvre cette fenetre, c'est donc la même instance de ImportController, mais là  windowDidLoad n'est pas appelé ... A priori car la fenetre est toujours chargée en mémoire, elle n'est juste pas affichée.

    Donc, comment détecter que la fenêtre est réaffichée ?
  • Eddy58Eddy58 Membre
    octobre 2005 modifié #4
    Et avec le delegate windowDidBecomeKey, tu as essayé ?

    Sinon, tu peux simplement exécuter ta propre méthode d'initialisation aprés la réouverture de la fenêtre : :)
    [tt]
    -(IBAction)importerImage:(id)sender
    {
        if (!importController)
           {
                    importController = [[ImportController alloc]init];
         }
            [importController showWindow:self];
            [importController initialisations];
    }
    [/tt]
  • UniXUniX Membre
    15:23 modifié #5
    Ouais, j'ai essayé windowDidBecomeKey, windowDidBecomeMain, windowDidUpdate, ...

    Bon, ton astuce fonctionne, le seul petit bémol (mais je chipotte), c'est quand la fenêtre réapparaà®t, pendant une demi seconde on la voit dans son état post-initialisation ....
  • Eddy58Eddy58 Membre
    15:23 modifié #6
    Et si tu inverses les deux lignes ? :)
    [tt]
          [importController initialisations];
          [importController showWindow:self];
    [/tt]
  • UniXUniX Membre
    15:23 modifié #7
    :fouf): :fouf): :fouf): :fouf): :fouf): :fouf):

    Bon, allez, c'est le week-end, moi j'ai fait du Cocoa toute la semaine, et je crois que le cerveau n'en peut plus.
    Je vais me coucher .... :crackboom:-
  • Eddy58Eddy58 Membre
    15:23 modifié #8
    Bah ça arrive à  tout le monde, mais bon, avant d'aller te coucher, rien ne t'empêche d'offrir ta tournée générale :p :p , on te laisse même choisir la boisson (Si tu veux faire plaisir à  Renaud choisis une bonne bière Cantillon), tu vas voir ça fait du bien au cerveau et tu seras tout frais lundi pour refaire du Cocoa. :P ;D
  • UniXUniX Membre
    15:23 modifié #9
    :p :p :p :p :p :p
    ;D ;D ;D
Connectez-vous ou Inscrivez-vous pour répondre.