4

Je suis nouveau dans le développement de l'iPhone. Comment puis-je porter une valeur de chaîne de view2 à view1 lors de l'utilisation de la barre de navigation. Je n'ai aucun problème à transporter des valeurs de chaîne de view1 à view2 à view3 à .... en utilisant pushviewcontroller Mais quand je reviens aux vues précédentes en utilisant le bouton Précédent de la barre de navigation, je ne peux pas contenir de valeurs de chaîne. J'ai besoin de votre aide pour résoudre ce problème.Comment retourner une valeur de view2 à view1 lors de l'utilisation de la barre de navigation

Merci à l'avance

Répondre

3

Cette chose peut être faite facilement si le passage de la référence de la classe actuelle à la classe suivante et changer les valeurs en utilisant cette référence.

Comme: La classe à pousser.

@interface B:UIViewController{ 
    id delegate; 
} 
@property (nonatomic,retain) id delegate; 
@end 

@implementation B 
@synthesize delegate; 

-(void)methodA{ 
    [delegate setNewString2:@"Madhup"]; 
} 

@end 

La classe à partir de laquelle vous poussez B:

@interface A:UIViewController{ 
    NSString *newString; 
} 
@property (nonatomic,retain) NSString *newString; 
@end 


@implementation A 
@synthesize newString 
- (void)method2{ 
    B *newBObject = .......; 
    [newBObject setDelegate:self]; 
    [self.navigationController pushViewCo.......]; 
    } 
@end 

Hope this helps.

+0

Merci Madhu, J'ai fait mon travail. Mon alimentation m'a aidé à comprendre certains modèles de base. –

+0

@Anil Kumar: l'alimentation des cuillères n'est disponible que pour les débutants –

+0

@property (nonatomic, retain) id delegate; est conserver correct ou il devrait être assigner. Toute différence que cela fait? –

2

Il y a plus d'une façon de le faire. Voici quelques-unes:

  1. Vous pouvez accéder à tous les contrôleurs de vue dans la pile de navigation via la propriété du contrôleur de navigation viewControllers: self.navigationController.viewControllers

  2. Vous pouvez atteindre le contrôleur de vue précédent (celui qui a poussé la contrôleur actuel sur la pile de navigation) par l'intermédiaire de la propriété parentViewController:

  3. Vous pouvez utiliser le modèle délégué, où le contrôleur de vue précédent (parent) serait le délégué du contrôleur (enfant) actuel.

  4. Vous pouvez conserver une référence (conserver) au contrôleur enfant dans le contrôleur parent.

Dans les 3 premiers, le contrôleur de l'enfant serait responsable de la remise des données au contrôleur parent. Dans le 4ème, le parent obtiendrait les données de l'enfant avant de le libérer.

+1

Merci Can Berk, J'ai obtenu des choses avec Delegate Pattern, travaillant sur MVC. Merci pour votre réponse rapide –

+0

de rien. –