Je suis en train de développer une application iPhone qui, entre autres, permet à l'utilisateur de s'inscrire, de se connecter et de se déconnecter d'un serveur web distant.
Pour cette fonctionnalité de l'application, j'ai défini 3 contrôleurs de vue.
- SignupViewController
- LoginViewController
- LogoutViewController
et chacun a un fichier xib respectif.
Je veux pouvoir passer d'une vue à l'autre en fonction du bouton sur lequel on appuie. Par exemple :
Le SignupView aura un bouton d'inscription et un bouton de connexion, si le bouton d'inscription est pressé, je veux changer de vue pour le LogoutView et si le bouton de connexion est pressé, je veux changer de vue pour le LoginView.
De même, l'affichage de connexion aura un bouton de connexion et, lorsqu'il sera pressé, il passera à l'affichage de déconnexion.
Et enfin, la LogoutView aura un bouton de déconnexion dont l'action fera basculer les vues vers la LoginView.
J'ai réfléchi à un certain nombre de stratégies différentes à adopter lors de l'élaboration de ce projet, mais je ne suis pas sûr de la meilleure.
Une idée, et probablement la plus facile à mettre en œuvre, est d'avoir un contrôleur de vue unique avec trois vues différentes définies dans le fichier xib et de laisser le contrôleur gérer la commutation. Cette approche me pose quelques problèmes : le fichier xib sera assez volumineux et pourrait être lent à charger, tandis que la logique de mon contrôleur deviendra probablement très complexe.
La deuxième idée, et mon approche actuelle, est d'avoir un contrôleur de vue parent qui est responsable de l'activation et de la désactivation de l'une des trois vues secondaires. Le problème que je rencontre est que les actions des boutons ne peuvent être assignées qu'aux méthodes du contrôleur de la vue secondaire en cours. Dans mon cas, la méthode que je dois appeler pour gérer la commutation se trouve dans le contrôleur parent et cette méthode n'est pas disponible pour mes vues secondaires.
Un délégué semblerait être la réponse parfaite ici, car je pourrais demander au contrôleur parent d'exécuter la méthode de commutation, mais je ne sais toujours pas comment définir un délégué pour effectuer cette opération dans mon code.
Quelqu'un peut-il m'aider ? Existe-t-il une troisième stratégie qui fonctionnerait mieux que la stratégie de délégation ?