2009-11-06 3 views
2

salut je suis nouveau à l'objectif c. J'ai un contrôleur de vue de connexion avec les fichiers .h, .m, .xib. et après connexion réussie, je dois aller à la deuxième page.comment passer une valeur de chaîne d'un contrôleur de vue à un autre contrôleur de vue

Le scénario est le suivant: j'accède aux services Web. Pour authentifier l'utilisateur, j'envoie le nom d'utilisateur et le mot de passe au service web et en retour je reçois une valeur de chaîne. en fonction des résultats de la valeur de la chaîne j'ai besoin d'afficher un deuxième écran. Veuillez nous aider

+0

J'ai essayé de créer une nouvelle classe partagée. il crée 2 fichiers pour moi shared.h, et shared.m Maintenant, je place ma valeur de chaîne dans le fichier shared.h et enregistre le fichier. le fichier shared.h a NSMutableString * soapresult; maintenant dans le contrôleur de ma vue de connexion il ressemble. @class SecondView #import @inteface ConnexionView: UIViewController { // nom d'utilisateur textfield; // motdepasse // bouton de connexion Shared * sharedObject; } maintenant dans le fichier de connexion view.m j'essaie d'utiliser la chaîne comme sharedObject.soapResults. Mais j'ai une erreur. S'il vous plaît aider – shreedevi

Répondre

1

Vous pouvez créer une classe pour stocker des données partagées et en créer une instance dans votre délégué d'application. De cette façon, vous pouvez utiliser ces données partagées dans n'importe quelle classe de votre application.

+0

pouvez-vous s'il vous plaît me fournir l'exemple de code .. – shreedevi

2

Si vous n'avez besoin de transmettre que quelques valeurs, vous pouvez en faire des paramètres pour la méthode init. Par exemple:

-(id)initWithUserName:(NSString *)name andPassword:(NSString *)password { 
    self = [super init]; 
    if (nil == self) { 
     return nil; 
    } 

    // display or store login info somewhere 
    [someLabel setText:name]; 

    return self 
} 

Sinon, si vous avez beaucoup de valeurs que vous souhaitez utiliser dans la vue suivante aller avec les conseils de Morion et de faire une classe séparée.

+0

En regardant une partie du code affiché, vous pouvez étendre la méthode init de SecondView avec un paramètre NSString supplémentaire, comme dans l'exemple ci-dessus. – ihuk

+0

Je ne vous ai toujours pas eu .. J'ai une première vue controller.m, qui obtient la valeur de résultat d'un service web dans une chaîne NSMutable. maintenant je veux l'afficher en deuxième vue – shreedevi

+0

Je suppose que vous avez [[SecondView alloc] init] quelque part dans votre code. Si vous ajoutez un autre paramètre à la méthode init comme je l'ai décrit, vous pouvez utiliser [[SecondView alloc] initWithSomething: string] pour transmettre la valeur de la chaîne à votre deuxième vue. – ihuk

1

OPN consiste à créer des propriétés dans le délégué de l'application. Chaque contrôleur peut accéder à l'appdelegate avec:

[[UIApplication sharedApplication] delegate] 
0

Vous ne pouvez pas afficher les valeurs dans les fichiers nib.

Obtenez une référence au Standard user defaults et stockez la chaîne dans ce champ. Ensuite, vous aurez accès à la valeur où vous voulez.

1

Est-ce votre question? quand vous obtenez votre réponse du serveur, vous devez faire un contrôleur de vue et mettre cette chaîne dedans?

Essayez quelque chose comme ceci dans votre premier contrôleur de vue

// Get the string from the server 
NSString *string = [get string from server]; 

// Create the second controller 
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"nibname" bundle:nil]; 

// Set the text property of a label in the controller 
controller.myLabel.text=string; 

// Add the view to the window so we can see it 
[[[[UIApplication sharedApplication] delegate] window] addSubview:controller.view]; 

Cela va créer un nouveau contrôleur, définissez une chaîne et l'afficher dans la fenêtre.

Vous devrez créer un fichier xib qui contient un UILabel et l'attacher à un propety appelé MyLabel dans le second contrôleur à savoir

@interface SecondViewController { 
    UILabel *myLabel; 
} 

@property (nonatomic, retain) IBOutlet UILabel *myLabel; 

@end 

Hope this helps,

Sam

+0

Ce ne fonctionne pas ... –

+0

Vous devrez peut-être fournir plus d'informations que «ça ne marche pas» sinon c'est difficile de vous aider :) – deanWombourne

+0

Son fonctionnement, merci –

0
NSString *str1 = @"Apple"; 
NSString *str2 = @"Orange"; 

if([str1 isEqualToString: str2]) { 

}else{ 

} 

cela vous aidera

Questions connexes