ouvrir une fenêtre depuis la MainWindow

bofybofy Membre
09:02 modifié dans API AppKit #1
Bonjour

Je sais faire, à  beaucoup près..., faire ce que je veux avec une seule fenêtre MainWindow.

Je voudrais utiliser une deuxième fenêtre et communiquer entre les deux. Je sais le faire, id°.

Mais mes deux fenêtres s'ouvrent en même temps.

Or je voudrais que la deuxième fenêtre soit invisible au lancement du programme et qu'elle soit visible lorsque je clique sur un bouton de la MainWindow. Comment faire ?

Ca doit être évident ... ? Ma seule excuse :  je suis novice en Cocoa.

Merci

Réponses

  • ClicCoolClicCool Membre
    09:02 modifié #2
    Bienvenu Bofy


    1°) Sous I.B., dans le paneau de ta window attributes tu décoches "visible at launch"

    2°) Dans ta "fentêtre principale" tu places un contrôle (un NSButton par exemple) et défini son action comme étant "orderFront:" de ton autre fenêtre.
    (Alt-Clic-Drag de ton contrôle sur la fenêtre, puis tu choisis "orderFront" dans la liste des actions diponibles pour celle-ci)
  • bofybofy Membre
    09:02 modifié #3
    Merci

    Ca marche parfaitement. Je réussi même à  fermer la fenêtre en cliquant sur un autre bouton !
  • RocouRocou Membre
    09:02 modifié #4
    dans 1205424727:

    Bienvenu Bofy


    1°) Sous I.B., dans le paneau de ta window attributes tu décoches "visible at launch"

    2°) Dans ta "fentêtre principale" tu places un contrôle (un NSButton par exemple) et défini son action comme étant "orderFront:" de ton autre fenêtre.
    (Alt-Clic-Drag de ton contrôle sur la fenêtre, puis tu choisis "orderFront" dans la liste des actions diponibles pour celle-ci)

    Merci également pour ces explications.
    Cependant, quand je ferme cette nouvelle fenêtre et que je tente de la réouvrir en cliquant sur le NSButton, l'application plante (le debugger est lancé)
  • NoNo Membre
    09:02 modifié #5
    dans 1234347535:

    Merci également pour ces explications.
    Cependant, quand je ferme cette nouvelle fenêtre et que je tente de la réouvrir en cliquant sur le NSButton, l'application plante (le debugger est lancé)


    Toujours dans IB, l'option "Release when closed" (dans attributes de l'inspecteur) doit être décochée pour la fenêtre.
    Sinon, à  sa première fermeture, elle sera purgée (et donc inutilisable si tu tentes de la réafficher).
  • RocouRocou Membre
    09:02 modifié #6
    dans 1234349409:

    dans 1234347535:

    Merci également pour ces explications.
    Cependant, quand je ferme cette nouvelle fenêtre et que je tente de la réouvrir en cliquant sur le NSButton, l'application plante (le debugger est lancé)


    Toujours dans IB, l'option "Release when closed" (dans attributes de l'inspecteur) doit être décochée pour la fenêtre.
    Sinon, à  sa première fermeture, elle sera purgée (et donc inutilisable si tu tentes de la réafficher).


    Merci mais décocher cette option n'a-t-elle pas d'incidence sur la mémoire par exemple? Car j'imagine que la "purge" a son importance.
  • NoNo Membre
    09:02 modifié #7
    dans 1234352706:

    Merci mais décocher cette option n'a-t-elle pas d'incidence sur la mémoire par exemple? Car j'imagine que la "purge" a son importance.


    Si tu décoches, c'est à  toi de gérer le release par programmation.
    Quand tu fermes la fenêtre, tu devras déterminer si tu en aura encore besoin plus tard (auquel cas tu ne le release pas), où si tu n'en auras plus utilité (et là , tu feras un [maWindow release]; ).
  • RocouRocou Membre
    09:02 modifié #8
    dans 1234353834:

    dans 1234352706:

    Merci mais décocher cette option n'a-t-elle pas d'incidence sur la mémoire par exemple? Car j'imagine que la "purge" a son importance.


    Si tu décoches, c'est à  toi de gérer le release par programmation.
    Quand tu fermes la fenêtre, tu devras déterminer si tu en aura encore besoin plus tard (auquel cas tu ne le release pas), où si tu n'en auras plus utilité (et là , tu feras un [maWindow release]; ).

    Est-ce que quitter l'application elle-même permet de faire le "release" automatiquement?
  • CéroceCéroce Membre, Modérateur
    09:02 modifié #9
    Non, ça ne fait pas le [release] (la méthode n'est pas appelée), mais de toute façon, la mémoire utilisée par le processus est évidemment libérée.
  • RocouRocou Membre
    09:02 modifié #10
    Ok, merci à  tous les deux.
Connectez-vous ou Inscrivez-vous pour répondre.