Réutilisation d'une variable dans un autre .m que le principal

thedjnivekthedjnivek Membre
Alors voilà , je m'explique.

Je suis développeur d'application iPhone depuis très peu, j'ai déjà  une application à  mon actif (QuiX Calculs).

Mais je suis aujourd'hui sur un nouveau projet, et j'ai changé mon mode de conception, je possède pour chaque page de mon application un .xib/.h/.m mais il s'avère que j'aurais aimé récupérer des informations de la première page vers une deuxième page (information).

Je veux donc réutiliser ma variable dans une autre fenêtre que celle d'origine.

Comment faut-il procéder? Je n'y arrive pas et pourtant je pense que cela doit être tout bête mais j'ai déjà  essayer d'importer le .h de ma fenêtre principale mais rien n'y fait, cela me marque que ma variable n'est pas déclarée..  :'(

Cordialement

Réponses

  • 19:11 modifié #2
    Je pense que tu as beaucoup de choses à  apprendre..
    Au moment d'instancier ta "2ème page", il suffit d'utiliser une méthode d'initialisation "personnalisée".

    par exemple (avec un NSString) :

    <br />// Ma page 2.h<br /><br />@interface MaPage2Controller : NSObject<br />{<br />&nbsp; &nbsp;  NSString* maVariableDePage1;<br />}<br />@property (nonatomic, retain) NSString* maVariableDePage1;<br />- (id)initWithVariable:(MaVariableClass*)aVariable;<br /><br />@end<br />
    


    <br />// Ma Page 2.m<br />@implementation MaPage2Controller<br />@synthesize maVariableDePage1;<br /><br />- (id)initWithVariable:(NSString*)aVariable<br />{<br />	if(self = [super initWithNibName:@&quot;MaPage2&quot; bundle:nil])<br />	{<br />		self.maVariableDePage1 = aVariable;<br />	}<br />	return self;<br />}<br /><br />- (void)dealloc<br />{<br />	self.maVariableDePage1=nil;<br />	[super dealloc];<br />}<br />
    


    Bien sûr, ce n'est qu'un exemple, tu n'est pas obligé de faire ça au moment où tu instancies ta "page 2". Tu peux très bien retirer la méthode "initWithVariable:" que j'ai rajouté, et ne laisser uniquement que la property "maVariableDePage1" et ce qui colle avec.

    Si tu laisses la méthode init personnalisée comme j'ai fait, voici comment instancié ta "page 2" :
    <br />// Page 1.m<br />- (void)goToPageTwo<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; NSString* maVariable = @&quot;test&quot;;<br />	MaPage2* page2 = [[MaPage2 alloc] initWithVariable:maVariable];<br />&nbsp; &nbsp; &nbsp; &nbsp; [self.navigationController pushViewController:[page2 autorelease] animated:YES];<br />}<br />
    


    Sinon, tu vire la méthode initWithVariable et dans ce cas :
    <br />// Page 1.m<br />- (void)goToPageTwo<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; NSString* maVariable = @&quot;test&quot;;<br />	MaPage2* page2 = [[MaPage2 alloc] initWithNibName:@&quot;MaPage2&quot; bundle:nil];<br />&nbsp; &nbsp; &nbsp; &nbsp; page2.maVariableDePage1 = maVariable;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; [self.navigationController pushViewController:[page2 autorelease] animated:YES];<br />}<br />
    


    Tout simplement.
    J'opte souvent pour un "init" perso pour m'éviter de rajouter une ligne au moment d'instancié le nouveau controller. C'est débile (je sais) parce qu'il faut de toute manière implémenter ça dans le .m du nouveau controller... Mais je trouve ça quand même plus classe, et ça donne surtout un meilleur repérage dans le code par la suite. Quand tu verras partout des "initWithNibName" tu te diras "fais chier". Alors que si chacun est unique, tu les repères facilement grâce à  leurs "init" différents les uns des autres.

    Chacun fait comme il veut. La version "2" n'est pas mal non plus.
  • thedjnivekthedjnivek Membre
    19:11 modifié #3
    Ok, je te remercie, oui oui j'ai beaucoup de choses à  apprendre encore.

    Moi j'ai créé une variable comme en C, j'ai fait" int ageValue=0;"
    Cela ne dérange pas les choses pour ton code?

    Si tu as regardé mon application, qu'en penses tu?
  • thedjnivekthedjnivek Membre
    19:11 modifié #4
    Ne peut-on pas utiliser un pointeur ou un truc du genre ?
Connectez-vous ou Inscrivez-vous pour répondre.