Bonjour,
Je suis confronté à un problème en essayant d’aller un peu plus loin que le cours auquel je suis dans la formation. Je m’explique, j’ai crée un UITableViewController et un UIViewController. Dans mon UITableViewController j’ai déclaré un tableau de ma classe Note qui permet d’alimenter ma table. Le UIViewController est affiché de deux manières : lors de la sélection d’une cellule de ma table et lors l’appui d’un bouton d’ajout. La navigation est gérée par un UINavigationController.
Voici le code de mon UITableViewController :
Voici mes questions :
- Actuellement je sais comment passer une note à mon UIViewController via la fonction prepare mais comment je peux recevoir cette note éventuellement modifiée une fois que l’utilisateur quitte le UIViewController en appuyant sur le bouton retour crée par le contrôleur de navigation ?
- Comment je peux connaitre l’instance de mon UITableViewController depuis mon UIViewController ?
Voici le code de mon UIViewController :
J’espère avoir été le plus clair possible.
Merci.
Je pense que le plus simple étant de recharger les données de ta table dans le viewWillAppear de ton tableViewController avec self.tableView.reloadData()
Si tu ne veux pas tout recharger, tu peux voir si le selectedIndexPath de ta table n’est pas vide. Et si c’est le cas, alors tu ne recharges que cette ligne.
Merci pour ta réponse Maxime. Le problème qui se pose c’est l’ajout de ma nouvelle variable dans mon tableau :
-
soit je l’ajoute depuis ma vue B mais il faut que je puisse récupérer l’instance de ma vue A (j’ai le segue pour aller de la vue A vers la vue B mais pas l’inverse car c’est le navigation controller qui s’occupe de remettre la vue A)
-
soit je récupère la vue appelante dans le viewWillAppear de ma vue A et lorsqu’il correspond à ma vue B
Ca doit être tout bête mais je sais pas comment procéder dans les deux cas.
Merci d’avance pour votre temps.
En fait, dans l’idéal il faudrait séparer ton modèle de tes affichages. Le problème que tu as est que tes contrôleur sont responsables des données alors qu’il faudrait éviter ça. Il faudrait que tes contrôleurs ne soient là que pour charger des donnés, les afficher, répondre aux interactions et appliquer les changements dans la base.
Si tu ne les as pas encore vues, te devrais regarder les dernières vidéos du cours qui traitent justement de ça.
Une fois que ton modèle est découplé de tes contrôleurs ça devient beaucoup plus simple : ton écran B modifie les données dans le modèle, quand l’écran A recharge les données il a toujours les dernières.
Autre remarque, pour un ajout de nouvelle note, on utilise généralement une vue modale plutôt qu’une navigation. La navigation est parfaite pour afficher des données existantes mais pas pour en créer des nouvelles. https://developer.apple.com/design/
Merci pour ces précisions Maxime. Pour ceux que ça intéresse, le chapitre qui traite de ça est “Conception et organisation du code”.
1 « J'aime »
En lisant ce poste, j’suis content… Pourquoi ??? Bin parce que j’aurais donné la meme réponse concernant le MVC…
1 « J'aime »