Lorsque j'ouvre un UIView personnalisé à partir d'un UITableViewController, comment puis-je fermer la vue personnalisée et revenir à la vue table?
-
06-07-2019 - |
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:
- Un
UIView
peut-il communiquer avec son contrôleur? Comment? - Un contrôleur peut-il parler à celui qui l'a lancé? Comment?
- Comment puis-je effectuer une transition harmonieuse entre tout ce réseau complexe de vues et de contrôleurs?
La solution
-
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? -
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. -
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.