2015-12-23 1 views
2

J'essaie de fermer un contrôleur de vue et d'en présenter un autre en même temps. Lorsque le Level1Controller() est fait et appelle le self.dismissViewController(), je voudrais qu'il m'amène à un autre contrôleur de vue appelé EndScene().Swift: dismissViewController et instanciation d'un autre ViewController

C'est le code qui m'a le plus proche.

self.dismissViewControllerAnimated(true, completion: {() -> Void in 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let nextViewConroller = storyboard.instantiateViewControllerWithIdentifier("endscene") 
     self.presentViewController(nextViewConroller, animated: false, completion: nil) 
    }) 
+0

Et quel est le véritable problème que vous rencontrez @Rogue Studios? –

+0

@RaphaelOliveira Il va juste me redémarrer à la racine viewcontroller et ceci est le message d'erreur '2015-12-23 17: 47: 35.333 Spin Game [6466: 2789372] Avertissement: Tentative de présenter sur dont la vue ne se trouve pas dans la hiérarchie de la fenêtre! ' –

+0

Je l'ai, j'écrirai une réponse. –

Répondre

2

Au lieu d'appeler dismissViewControllerAnimated sur Level1Controller, appelez sur le contrôleur de vue qui l'a présenté. Ensuite, sur le bloc d'achèvement, vous pouvez présenter le EndScene de la même manière que vous le faites. L'erreur se produit car, en fait, puisque vous avez supprimé Level1Controller de la fenêtre, cela n'a aucun sens de l'utiliser pour présenter un autre contrôleur de vue.

Fenêtre -> ParentViewController (appel rejeter ici) -> Level1Controller

Fenêtre -> ParentViewController (présent EndScene à la fin) -> EndScene

Vous devrez probablement aviser le parent de Level1Controller que l'annulation l'action a été effectuée et vous pouvez le faire par délégué. Une autre option (je ne l'ai pas testé) est de garder le licenciement en Level1Controller et présent à partir du presentingViewController.

self.presentingViewController.presentViewController... 

Je ne sais pas mais si presentingViewController sera égal à zéro lorsque le bloc d'achèvement est invoquée.

+0

Merci, je vais essayer cela bientôt. Je vais vous dire comment ça se passe. –

+0

Hey Rogue, je suis content que vous ayez résolu votre problème. Quelle solution avez-vous utilisé? –