2010-07-24 5 views

Répondre

2

Je ne voudrais pas utiliser un singleton ou tout autre 'variable globale'. Cela rendra vos contrôleurs de vue très étroitement couplés et restreindra la réutilisabilité. Je voudrais simplement créer une variable d'instance dans le second contrôleur de vue et le définir dans le principal avant de présenter la vue.

Le deuxième contrôleur de vue définit ensuite le label.text sur la variable d'instance dans (par exemple) viewDidLoad. De cette façon, le deuxième contrôleur de vue ne dépend d'aucun 'globals' ou inclut et sera plus réutilisable.

//SecondViewController.h 
@interface SecondViewController : UIViewController { 
    NSString *theLabel; 
} 

@property(nonatomic, copy) NSString *theLabel; //Synthesize in implementation 

@end 

Ensuite, dans le contrôleur principal de la vue:

//Create instance of secondViewController 
instanceOfSecondViewController.theLabel = @"Nut"; 
//Present the second view here 
+0

Chaque fois que je vois quelqu'un en utilisant des variables globales ou singletons où l'on est pas nécessaire, je vois quelqu'un qui ne sait pas ce qu'ils font. – lucius

0

Si la classe A gérer votre view1 et view2 poignée de classe B puis définir une interface en classe B d'accepter une nouvelle étiquette à votre l'un des éléments de l'interface utilisateur, puis appeler cette interface de la classe A.

0

Regardez dans le Singleton modèle.

What should my Objective-C singleton look like?

Ensuite, vous pouvez faire quelque chose comme:

//view1 
#import "SingletonClass.h" 
... 
[SingletonClass sharedInstance].savedText = @"blah"; 

et

//view2 
#import "SingletonClass.h" 
... 
lbl.text = [SingletonClass sharedInstance].savedText; 
Questions connexes