2012-05-02 4 views
0

J'ai une application avec différents ViewControllers qui sont gérés dans un contrôleur de navigation. Dans un ViewController, je fais une demande à mon WebService pour authentifier l'utilisateur. J'écris la réponse dans un BOOL (isLoggedIn). Maintenant, je dois utiliser ce BOOL et le nom d'utilisateur dans différents ViewControllers. J'ai besoin de la variable pour changer un titre de bouton de navigation personnalisé (Login -> Logout). Aussi dans un autre ViewController je dois envoyer quelque chose à mon WebService, mais seulement un utilisateur authentifié (isLoggedIn) est autorisé à faire l'appel. J'espère que c'est assez bien expliqué :) Alors, quelles sont les possibilités que j'ai pour faire ce travail? J'ai lu quelque chose pour créer une classe Singleton, est-ce la bonne façon? Ou devrais-je créer une connexion entre mon ViewController et les ViewControllers concernés? Comment puis-je faire cela? En ce moment je viens d'utiliser la méthode prepareForSegue pour référencer un DetailViewController et passer les données.Comment créer une variable globale pour accéder à différents ViewControllers?

Répondre

1

Vous pouvez faire une mise en œuvre singleton comme:

static SingletonClass *_sharedClass = nil; 
@implementation SingletonClass 

@synthesize sharedVar; 

+ (SingletonClass*)sharedClass 
{ 
    if (_sharedClass == nil) { 
     _sharedClass = [[SingletonClass alloc] init]; 
    } 
    return _sharedClass; 
} 

- (id)init 
{ 
    if ((self = [super init])) { 
     //init any class vars you need 
    } 
    return self; 
} 
@end 

Puis ont sharedVar être une propriété de la classe. De n'importe où dans l'application, vous pouvez utiliser:

[[SingletonClass sharedClass] sharedVar]; 

pour y accéder.

+0

merci beaucoup ... Ça marche :) – milepile

Questions connexes