Présentation d'un UIViewController à partir d'un SKscene (SpriteKit)

Il y a plusieurs articles sur Internet demandant comment combiner correctement SpriteKit et Storyboard / Interface builder. En particulier personne n'est capable de passer d'un SKscene à un UIViewController désiré. AUCUNE des solutions sur le net aborde vraiment ce problème! Est-ce vraiment pas possible de faire ça? Si oui, ce serait une limitation importante de SpriteKit …

Vous ne pouvez pas passer directement d'un SKScene à un autre UIViewController .

Cependant, le SKScene est déjà contenu dans un UIViewController .

Vous pouvez utiliser la delegation pour passer un appel de méthode de la scène à son controller. Le controller peut alors passer à un autre controller de vue.

Alors…

  1. Créer un protocole de délégué qui contient une méthode quelque chose comme … - (void)transitionToOtherViewController;

  2. Définissez le controller de vue en cours en tant que délégué de votre scène.

    self.scene.delegate = self;

  3. Lorsque vous souhaitez passer à un autre controller de vue. Dans la scène, vous auriez quelque chose comme …

    [self.delegate transitionToOtherViewController];

Ensuite, dans le controller de vue, vous avez …

 - (void)transitionToOtherViewController { MyOtherViewController *controller = [MyOtherViewController new]; [self.navigationController pushViewController:controller animated:YES]; } 

Ou quelque chose comme ça…