2008-11-11 5 views
2

J'ai un UIViewController qui gère l'affichage de certaines données. Lorsque l'utilisateur veut éditer ces données, j'appuie sur UIViewController pour éditer la pile. Lorsque l'utilisateur a terminé l'édition, le contrôleur de vue supérieur est retiré de la pile. Quelle est la manière la plus élégante de savoir que j'ai besoin de mettre à jour mon affichage après que la vue d'édition soit désactivée?Quelle est la meilleure façon de savoir quand le UIViewController au-dessus de moi dans la pile a été sauté?

Je pensais pouvoir mettre le code de mise à jour de contenu dans la méthode viewDidLoad de ma vue de données, mais cette méthode n'est pas toujours appelée lorsque ma vue s'affiche, surtout pas lorsque je navigue dans la pile de vues .

J'ai également examiné la mise en place de mon contrôleur de vue des données en tant que délégué pour la UINavigationController et attendre – navigationController:didShowViewController:animated: être appelé, je crains qu'il peut y avoir d'autres contrôleurs de vue qui doivent être notifiées quand ils sont affichés et il sera se transformer en un léger mal de tête gérant quel contrôleur devrait recevoir le message didShowViewController.

Répondre

5

Je pense que viewWillAppear fera l'affaire. Sinon, votre contrôleur de vue d'édition pourrait appeler une nouvelle méthode de délégué pointant vers votre contrôleur parent. Là, vous pouvez mettre à jour le modèle de données et l'afficher. Par exemple:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if ([delegate respondsToSelector:@selector(editEntryByTitle:)]) 
     [delegate performSelector:@selector(editEntryByTitle:) withObject: textField.text]; 
    [textField resignFirstResponder]; 
    [self dismissModalViewControllerAnimated:YES]; 
    return YES; 
} 
+0

viewWillAppear a fonctionné comme un charme, merci! – kubi

Questions connexes