GOOGLE ADS

dimanche 1 mai 2022

Afficher la feuille lors du premier chargement de la fenêtre principale

J'essaie de charger une feuille lors du premier chargement de la fenêtre principale. Cette feuille est telle qu'elle demande à l'utilisateur un fichier afin qu'il soit en quelque sorte obligé d'ouvrir un fichier à utiliser dans le programme lors de son premier démarrage.

J'ai essayé de mettre performSegue(withIdentifier: sender:) dans viewDidLoad(), mais cela charge juste la feuille et rien d'autre.

override func viewDidLoad() {
super.viewDidLoad()
performSegue(withIdentifier: NSStoryboardSegue.Identifier(rawValue: "browse"), sender: self)
}

Je veux que la fenêtre principale se charge, puis que la feuille glisse vers le bas immédiatement après avoir demandé à l'utilisateur d'ouvrir un fichier.

Où dois-je mettre le performSegue ou y a-t-il une autre façon de faire cela ?


Solution du problème

@mschmidt a raison, je crois ; vous devrez effectuer la transition à partir de viewDidAppear()ou windowDidBecomeMain()ou similaire ; la vue doit avoir été affichée avant que vous puissiez en sortir.

Notez que cela viewDidAppear()se déclenchera lorsque la vue sera dessinée, qu'elle ait ou non le focus ; windowDidBecomeMain()ne se déclenchera que lorsque votre application deviendra l'application la plus visible ; vous travaillez peut-être dans une autre application, mais vous pouvez toujours voir les fenêtres de votre application à l'écran et, dans cet état, vous ne vous êtes peut-être windowDidBecomeMain()pas encore déclenché.

Et oui, les deux viewDidAppear()et windowDidBecomeMain()se déclencheront à chaque fois que la vue apparaîtra ou que la fenêtre deviendra principale, ce qui signifie que si vous réduisez l'application puis la réduisez, les deux se déclencheront à nouveau. Vous aurez donc besoin d'un moyen de vous assurer que votre séquence ne s'affiche pas à chaque fois, sauf si vous le souhaitez. Un simple drapeau booléen, par exemple segueHasShown, devrait y parvenir.

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...