2011-02-14 3 views
0

Dans mon projet, ma première vue est une vue d'ensemble, et je voudrais obtenir le nom d'utilisateur par exemple dans d'autres classes. Je ne sais pas vraiment comment je peux l'obtenir dans d'autres classes, j'ai cherché dans stackoverflow et n'ai pas trouvé (j'ai essayé plusieurs choses mais ça n'a pas fonctionné) Je vous donne comment j'ai essayé de faire:Accéder à la variable via les classes de l'objectif-c

login.h

@interface loginViewController:UIViewController <UITextfieldDelegate>{ 

    IBOutlet UITextField *usernameField; 
    IBOutlet UITextField *passwordField; 
    IBOutlet UIButton *loginButton; 
    NSString *user; 

} 
@property (nonatomic, retain) UITextField *usernameField; 
@property (nonatomic, retain) UITextField *passwordField; 
@property (nonatomic, retain) UIButton *loginButton; 
@property (nonatomic, retain) NSString *user; 
- (IBAction)login: (id) sender; 
- (NSString *)user; 

@end 

login.m

@implementation LoginViewController 

@synthesize usernameField; 
@synthesize passwordField; 
@synthesize loginButton; 

- (IBAction) login: (id) sender{ 
    user=[[NSString alloc ]initWithFormat:@"%@",usernameField.text]; 
    //...I put here my login code... 

    } 

- (NSString *)user{ 
    return user; 
    } 

home.m

@implementation homeViewController 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
user2 = LoginViewController.user ; //I tried this after the advice given below, still not working 
user2 = LoginViewController.usernameField.text; //same 

NSLog(@"user: %@",user2); 

} 

J'ai besoin de cette valeur dans tout mon projet, pour afficher les informations sur le client qui est connecté.

J'ai juste besoin d'un conseil ou d'un exemple de code avec lequel je peux travailler.

Edit: J'ai changé mon code suivant les conseils donnés, dites-moi si je manqué quelque chose

Répondre

0

Créer un objet de votre loginViewController de classe homeViewController. Puis obtenez ou définissez la valeur de la variable de connexion selon votre requirment.

En supposant que vous ayez besoin d'un NSString dans votre homeViewController, créez un objet de loginViewController dans homeViewController.

anyRequiredVariable=login.usernameField.text;//Assuming that login is the object of loginViewController Class. 

Cela va résoudre votre problème.

Vive

+0

J'ai essayé de faire comme tu me dit, mais il semble que je ne peux pas accéder comme ça à mon loginViewController, il me reste une erreur (Demande de membre « texte » dans quelque chose pas une structure ou d'une union J'ai essayé: userTest = LoginViewController.usernameField.text; où userTest est un NSString. Dites-moi si j'ai manqué quelque chose – ciwol

+0

il ne fonctionne toujours pas avec elle, je ne sais pas quoi ajouter – ciwol

1

Deux choses:

  1. Votre principal problème est que vous déclarez une méthode qui prend un argument sender (getUser:(id)sender), mais envoyez un message sans deux points ou arguments (getUser) . Ce sont deux choses totalement différentes.

  2. Les accesseurs dans Objective-C ne doivent pas commencer par get - cela signifie autre chose. Le sélecteur (qui est fondamentalement le terme Objective-C pour les noms de méthodes) devrait simplement être user. Alors:

    - (NSString *)user { 
        return user; 
    } 
    
+0

ok merci pour cette explication, je pense que je dois en savoir plus sur les accesseurs et les sélecteurs. Une fois que j'ai fait cela, comment dois-je appeler la méthode "user" pour obtenir mon utilisateur de chaîne? comme me l'a dit Aditya? – ciwol

+0

cela ne fonctionne toujours pas et je ne peux pas travailler sans cela, y a-t-il autre chose pour m'aider? thx – ciwol

Questions connexes