Mettre la fenêtre au premier plan
awesomeman
Membre
Bonjour,
Je souhaite faire une fonction pour mettre ma fenêtre au premier plan .
J'ai cherché plusieurs moyens de manipuler une sorte d'objet window mais je n'ai rien trouvé .. tout se passe en GUI (et rien concernant la position premier plan, arrière plan ect ...)
Auriez vous des infos sur comment faire ?
Merci pour votre aide,
Bonne journée !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quelle fenêtre ; Principale ou autre ?
Pour une des fenêtres de ton application tu peux utiliser l'une des fonctions suivantes de ta NSWindow :
- makeKeyAndOrderFront:
Moves the window to the front of the screen list, within its level, and makes it the key window; that is, it shows the window.
- orderFront:
Moves the window to the front of its level in the screen list, without changing either the key window or the main window.
La fenêtre principale
Merci je vais regarder ça .
Mais par contre comment récupérer notre window sous forme de NSwindow ? il y a une sorte de méthode get dans la classe NSwindow ?
D'où veux-tu faire l'appel ?
Tu parles d'afficher une fenêtre d'une appli qui n'est pas la tienne ?
Si oui, pourquoi ?
Justement je ne sais pas ou je dois appeler cette fenêtre .
À la base j'aurai bien dis dans NSViewController mais cette classe n'est pas fait pour ça .
Si, la fenêtre est bien la mienne, c'est ma fenêtre principale .
Une image va surement aider :
C'est une fenêtre comme sur cette image que je veux manipuler (enfin presque ici, c'est le window controler qui est sélectionné)
je veux placer une fenêtre au premier plan . C'est une window on doit donc utiliser NSWindow mais comment récupérer la fenêtre sous forme de NSWindow dans du code ?
Tout simplement, comment manipuler ma fenêtre (de type NSWindow ) dans du code swift plutôt que dans la GUI comme au dessus .
Oui mais placer un bouton sur la fenêtre que l'on veut affiché n'a aucun sens, ça n'aura aucun effet ..
Ma situation est la suivante : je fais un appel au module LocalAuthentification avant d'accéder à l'application .
Problème, quand la fenêtre pour demander le mdp (avec LocalAuthentification) disparait l'application reste masqué .
Alors je sais que c'est en peu bête de s'embêter avec ça, il suffit de cliquer sur l'icône de l'app mais bon, j'aimerais bien faire les choses parfaitement
Ce qu'il faudrait c'est dire que : quand le mdp est validé avec LocalAuthentification il faut mettre la fenêtre principale au premier plan (ou l'afficher)
Tu n'as pas encore nous donné assez d'infos sur ce que tu as déjà fait et précisément ce que tu veux faire.
Il faut recommencer au commencement et préciser, pas après pas, ce que tu veuilles arriver.
De mon exemple, j'ai supposé que tu as une fenêtre déjà visible avant d'afficher la fenêtre de MdP ; c'est bien le cas ou non ?
Non la fenêtre de MdP apparait en premier, si le MdP est bon la seconde fenêtre s'affiche . Lorsque cette dernière s'affiche elle n'est pas visible puisqu'elle est au dernier plan (caché par toutes les autres fenêtres d'ouvertes comme Xcode ou chrome) . Ce que je veux c'est pourvoir la mettre au premier plan, devant toutes les autres fenêtres .
Je veux bien être plus explicite mais sans images c'est inutile et je ne comprends pas comment en ajouter avec ce système de forum ..
Le "insérer une image" ne fonctionne qu'avec des url ..
je vais posté tout le code "important" pour mieux comprendre à défaut de pouvoir mettre des screenshots :
la fonction pour demander l'authentification à l'utilisateur est askPass . Les booléens valid et breakit sont initialisé à false . lorsque valid est à true la seconde fenêtre s'affiche et si breakit est à true l'app quitte .
Côté ajoute d'images, tu n'as pas vu le bouton "plus d'options de réponse" en dessous la boà®te de saisie ?
Mais, en devinant, nous venons juste de discuter les fenêtres pour les MdP juste à côté de ton message http://forum.cocoacafe.fr/topic/15333-fenetre-pour-saisie-mot-de-passe/?p=148332
ah merci pour les images, en effet je n'ai pas bien regardé ..
Merci pour le lien sur le forum mais je n'ais pas de problème avec la fenêtre de MDP, j'utilise le Framework d'apple "LocalAuthentification". C'est lui qui créée la fenêtre de MDP et qui s'occupe de le vérifier .
voilà donc ma première fenêtre, celle qui demande le MDP à l'utilisateur :
La méthode askPass ?
ici (dans le NSViewController) :
Bah non ! tu attends trop avant de faire l'authorisation.
Dans l'AppDelegate :
C'est tout 8--)
Ou, si tu veux que la fenêtre principale ne s'affiche pas avant l'authorisation, il faut décocher "Is initial Controller" sur le NSWindowController dans le storyboard et le donner un "Storyboard Id".
Puis il ne faut que le code suivant dans l'AppDelegate :
Ah merci mon code est plus propre et cette fois ça fonctionne
Juste deux petites questions :
- à quoi sert l'AppDelegate ? quel est son rôle ?
- auriez vous des bons tutos pour comprendre / manier Xcode et tous le système de AppDelegate, WindowController, ViewController ect .. je trouve le dev apple sur Xcode assez complexe (sauf pour swift qui est bien documenté ) .
et enfin une petite remarque :
Le code que vous m'avez fournit donne un petit warning 10 seconde après son exécution :
Une idée ?
Merci pour votre aide !
C'est tout simplement un delegate pour l'app :-*
Ton app tourne soi-même mais, de temps en temps, elle a besoin de plus d'informations de toi ou elle veut te dire qqch. sur son état. Le delegate écoute pour les "appels" de l'appli, c'est à toi de les répondre.
Les meilleurs tutos sont ceux qui répondent à tes besoins du moment.
ça depend aussi sur ton niveau d'expérience en programmation, quelles langues que tu as déjà utilisé, quels environments de développement que tu as déjà utilisé.
Il faut te présenter ici, afin que nous puissions te connaà®tre mieux et te donner les conseils plus ciblés.
Désolée. Je ne l'ai pas testé assez. Tous le code qui concerne UIKit doit être fait sur le fil principal ; du coup, il faut déplacer le code qui charge le WindowController vers le Dispatch.main.sync :
Oh, et tu devrais traiter l'erreur dans le closure :
Un petit souci sur ce que tu tentes de faire.
Si l'utilisateur se trompait en saisissant le MdP, l'app se ferme tout de suite, sans avertissement ou renseignement, ce qui me semble, au moins, impoli.
Si c'était moi, je me dirait "qu'est-ce que j'ai fait ? - c'était une erreur de saisi ou quoi ?"
Ahhhh d'accord je n'avais pas compris que le delegate était un concept de programmation, je ne connaissais absolument pas ..
Je crois que je m'étais déjà présenté il y a un an, lorsque j'avais tout juste découvert swift .
Pour mon expérience j'ai appris pas mal de langages mais il y en a vraiment peu que je maitrise vraiment .
Ceux que je connais le mieux sont : le C/C++, php et bash .
Soit ce sont des langages un peu vieillissants ..
Pour ce qui est des langages "effleurer" : javascript, java, perl et python .
Merci je vais regarder ça
C'est vrai, je l'ai déjà modifié . D'ailleurs le LocalAuthentification d'apple fait très bien le travail .
à vrai dire, l'application est à la base destiné uniquement pour moi (Oui c'est un peu égocentrique ::) ) . Je pense que je vais un peu mettre en suspens ce projet pour approfondir mes connaissances en swift avec du code pur .
En tout cas merci pour tout !