Lorsque j'ouvre un UIView personnalisé à partir d'un UITableViewController, comment puis-je fermer la vue personnalisée et revenir à la vue table?

StackOverflow https://stackoverflow.com/questions/1029703

Question

J'utilise un UITableViewController pour un menu dans un jeu. La vue tableau ouvre un contrôleur de vue pour mon UIView personnalisé qui affiche le jeu. Lorsque le jeu est terminé, UIView est notifié (ce qui gâche un peu les principes de MVC) et à partir de là, je suis un peu perdu.

Questions:

  1. Un UIView peut-il communiquer avec son contrôleur? Comment?
  2. Un contrôleur peut-il parler à celui qui l'a lancé? Comment?
  3. Comment puis-je effectuer une transition harmonieuse entre tout ce réseau complexe de vues et de contrôleurs?
Était-ce utile?

La solution

  1. Utilisez un protocole de délégué ici. Votre jeu personnalisé UIView peut utiliser une propriété delegate et appeler des méthodes sur ce délégué lorsque des événements surviennent (fin de la partie, mise en pause, affichage fermé, etc.). Voici un excellent article sur l'utilisation de délégués: Comment créer des délégués dans Objective- C?

  2. Je vous conseillerais d'utiliser un contrôleur UINavigationController. Vous n'avez pas nécessairement besoin d'afficher la barre de navigation, mais si vous imbriquez vos contrôleurs de vue dans un contrôleur de navigation, vous avez accès à -pushViewControllerAnimated: et -popViewControllerAnimated: , qui il est vraiment facile de naviguer entre les niveaux de contrôleurs de vue imbriqués.

  3. Un autre avantage de UINavigationController: vous obtiendrez une belle animation de diapositive lorsque vous basculerez entre les vues.

Il existe d’autres mécanismes tiers que vous pouvez préférer aux mécanismes UIKit UINavigationController / UIViewController. Consultez le projet Three20 , en particulier la classe TTNavigationCenter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top