2009-11-12 6 views
0

Je sais que cette question était déjà posée plusieurs fois mais je ne comprends pas.Comment puis-je accéder à une méthode d'une autre classe?

J'ai 2 classes classA.h & .m et classB.h et .m. En classe A, j'ai un UITextField *myTextfield. Dans la classe B, j'importe l'en-tête de la classe A et je définis la classe avec @class classA. J'ai également défini classA *classa.

si j'essaie d'obtenir la valeur de myTextfield comme ceci myString = classA.myTextfield.text; rien ne se passe

des suggestions ce que je fais mal ici?

je serais si thankfull pour une réponse becaus sans avoir fait ça, je ne peux pas continuer de codage :)

merci!

+0

Votre valeur n'est-elle pas mise à jour ou votre code ne parvient pas à se compiler? – Vladimir

+0

il semble que vous essayez d'accéder aux propriétés de classe (variables) et non aux méthodes (les fonctions). Il y a beaucoup de tutoriels pour débutants sur le web. et voici le guide Objective-c 2.0 pour les propriétés déclarées: http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html#//apple_ref/doc/uid/TP30001163- CH17-SW1 – wkw

+0

J'ai eu un problème avec les valeurs et la méthode. J'ai pensé qu'une solution m'aiderait à résoudre les deux. j'ai oublié de changer le titre désolé. – jacky

Répondre

1

Les membres des classes Objective-C sont toujours privés.

Pour accéder aux membres d'une autre classe, vous devez créer des méthodes d'accès à ces propriétés. Le moyen le plus simple de le faire est de passer par les propriétés.

modifiy votre classA.h pour ressembler à ce

@interface classA : UITableViewController 
{ 
    IBOutlet UITextField *myTextfield; 
    ... 
} 
@property(retain, readonly) UITextField * myTextfield; 
... 
@end 

ensuite modifier classA.m avoir

@implementation classA 
@synthesize myTextfield; 

Ensuite, lorsque vous devez l'utiliser dans l'autre utilisation de classe soit

classa.myTextfield.text 

ou de préférence

[[classa myTextfield] text] 

Edit:

Assurez-vous également que myTextField est réglé sur une valeur, en l'accrochant à un champ de texte dans Interface Builder. Voir un exemple de tutoriel Interface Builder si c'est le problème.

+0

merci pour la réponse rapide! Alors, que se passe-t-il si je change par exemple UITabeViewController à SuperClass ou UIViewController? Cela n'a-t-il aucune influence sur le comportement des classes? – jacky

+0

SuperClass est juste un espace réservé pour votre super classe actuelle. Comme c'est un UITableViewController, je vais modifier l'exemple pour correspondre. –

+0

et comment puis-je appeler une méthode? [classA addEntryToList]; qui n'appelle pas la méthode mais pourquoi? La méthode ressemble à ceci: - (void) addEntryToList; merci – jacky

Questions connexes