2010-02-22 5 views
0

J'ai une application iPhone de données de base.Avertir un parent que quelque chose a changé

J'ai deux vues sur un contrôleur de navigation (vue A = racine, vue B = enfant).

Je voudrais dire à la vue A de mettre à jour sa tableVue lorsque la vue B est retirée du contrôleur de navigation (c'est-à-dire lorsque l'utilisateur appuie sur le bouton 'retour'). Quelle méthode est appelée quand cela se produit? Dois-je configurer un protocole ou une notification?

Merci,

Répondre

0

Vous pouvez implémenter la méthode viewWillDisappear de votre contrôleur vue B.

La meilleure façon serait de déclarer un « viewBDelegate » -protocol en vue contrôleur B qui sera mis en œuvre par vue A.

@protocol viewBDelegate <NSObject> 
@required 
-(void) viewBWillBeClosed; 
@end 

Ensuite, vous avez besoin d'une variable d'instance en vue contrôleur B représente une référence pour voir le contrôleur a (défini que lorsque vous appuyez sur la vue B).

@property (nonatomic, retain) id<viewBDelegate> delegate; 

Dans la méthode viewWillDisappear de vous afficher le contrôleur B vous pouvez informer que le délégué (vue contrôleur A) en appelant une méthode du protocole de délégué.

- (void)viewWillDisappear:(BOOL)animated{ 
    [delegate viewBWillBeClosed]; 
    [super viewWillDisappear:animated]; 
} 
+0

Merci! Cela semble fonctionner parfaitement :-) – Garry

0

Une façon dont je l'ai fait est de faire un BOOL (quelque chose comme didPushChildController) dans le parent qui est définie sur true lorsque vous appuyez sur l'enfant. Ensuite, dans le viewWillAppear du parent, vous pouvez tester si cette variable est définie et faire ce que vous voulez faire.

Selon la complexité de votre pile de contrôleur est, un délégué peut aussi être approprié

Questions connexes