0

Vous avez UINavigationController, avec une table parent qui a une celluleMise à jour table parent après la mise à jour des enfants dans uinvaigationcontroller

--------------- 
| paul  > | 
--------------- 

Et vous cliquez dessus et obtenez un écran qui a textfields que vous entrez

--------------- 
| name: paul | 
--------------- 
| age: 23  | 
--------------- 
| hair: brown | 
--------------- 
| etc   | 
--------------- 

--------------- 
| save button | 
--------------- 

Lorsque vous modifiez le nom de Steve et que vous appuyez sur le bouton Enregistrer (qui affiche la vue), comment mettre à jour la table initiale? J'utilise NSUserdefaults pour enregistrer et charger depuis. Lorsque je passe à la vue initiale, le nom ne change pas. ... Cependant, si je redémarre l'application, alors c'est là.

Impossible de savoir comment mettre à jour la première table pendant que l'application est en cours d'exécution.

Répondre

2

Vous pouvez implémenter le modèle de délégué ou envoyer un NSNotification. Pour cela, je pense que la quantité de code est à peu près la même, mais puisque c'est un viewController communiquant à un autre, vous devriez aller avec délégué. Lorsque vous instanciez (je suppose que vous présentez un modalViewController comme vous le décrivez) le nouveau UIViewController à pousser, vous définissez le délégué de childViewController sur self (self étant le parent viewController). Ensuite, vous implémentez une méthode dans le parent qui est dans le protocole de délégué. C'est à dire. - (void) dataChanged: (NSString *) newData. Ces méthodes devraient mettre à jour la table:

- (void) dataChanged:(NSString*) newData { 

    [self.tableView reloadData]; 
} 

Lorsque les données sont modifiées dans le poussé viewController appelle [self.delegate dataChanged:newData];

C'est le modèle d'Apple utilisé pour leurs composants, donc si ce que je viens d'écrire n'a pas de sens , essayez de chercher "modèle de délégué" et vous serez bientôt de retour sur la bonne voie :)

Questions connexes