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