Une variable commune à  toutes les instances d'un même objet ?

iShadowiShadow Membre
15:09 modifié dans API AppKit #1
Hello à  tous,
ça fait un bail que je n'ai pas posté ici :)
J'essaye de me remettre à  l'Obj-C, et depuis plusieurs heures je suis bloqué sur un truc... Ne vous moquez pas, la solution est sans doute tout simple ^^
Alors j'ai un controller A qui gère un NSTableView et un controller B qui gère l'ensemble de l'interface IB (sauf les différents NSTableView).
Mon controller A a un NSMutableArray et le controller B voudrait envoyer des infos au controller A pour que celui-ci ajoute des infos dans son NSMutableArray.
Comment faire ?
J'ai essayé de créer une méthode dans le controller A du genre :
- (void)addStringInArray:(NSString *)aString;

qui est appelée par le controller B... Mais à  chaque fois mon NSMutableArray renvoit (null)...

Help ? :why?:

Réponses

  • Philippe49Philippe49 Membre
    15:09 modifié #2
    Si les contrôleurs sont instanciés dans le nib, il suffit de
    • mettre IBOutlet id controllerA; dans l'interface de controllerB
    • connecter cet outlet dans le nib
    • puis dans le code de controllerB : [controllerA addString:aString]

    Ne pas oublier d'initialiser la NSMutableArray dans ControllerA

    Par contre, je ne comprends pas le titre de ton post.
  • iShadowiShadow Membre
    15:09 modifié #3
    C'est vrai que mon titre n'est pas très clair.
    En fait, je pensais que la solution consistait à  faire une créer une variable qui soit commune à  toutes les instances du controller A, car dans ce cas j'aurais pu initialiser autant de fois que je veux le controller A à  partir du B pour appeler la méthode...
    Je vais tester ta technique de suite.
    Merci !!
  • iShadowiShadow Membre
    15:09 modifié #4
    C'est bizarre car ça a l'air de marcher... Mais Xcode signale une erreur comme quoi controller A ne possède pas la méthode addString alors qu'elle marche pourtant bien (elle est bien appelée et tout...)
  • Philippe49Philippe49 Membre
    15:09 modifié #5
    Tu as déclaré addString dans l'interface ?
  • Philippe49Philippe49 Membre
    15:09 modifié #6
    dans 1219820321:

    C'est vrai que mon titre n'est pas très clair.
    En fait, je pensais que la solution consistait à  faire une créer une variable qui soit commune à  toutes les instances du controller A, car dans ce cas j'aurais pu initialiser autant de fois que je veux le controller A à  partir du B pour appeler la méthode...

    Il doit n'y avoir qu'une seule instance de ControllerA et une seule NSMutableArray pour que cela marche.
  • iShadowiShadow Membre
    15:09 modifié #7
    dans 1219821166:

    Tu as déclaré addString dans l'interface ?

    Je dois déclarer addString où ça ? Je l'ai fait dans le header du controller A...
  • Philippe49Philippe49 Membre
    15:09 modifié #8
    dans 1219822260:

    dans 1219821166:

    Tu as déclaré addString dans l'interface ?

    Je dois déclarer addString où ça ? Je l'ai fait dans le header du controller A...


    @interface ControllerA : ... {
    NSMutableArray * modelArray;
    }

    -(void) addString:(NSString *) aString ;

    ......

    @end
  • iShadowiShadow Membre
    15:09 modifié #9
    Ben oui c'est bien ce que j'avais fait et tout marche bien. Mais le compilo indique quand même une erreur (minime, puisque je peux exécuter)...
  • Philippe49Philippe49 Membre
    15:09 modifié #10
    Déclare

    @class ControllerA;

    @interface ControllerB : ... {
    IBOutlet ControllerA * controllerA;
    }

    ...

    @end


    #import "ControllerA.h"

    @implementation ControllerB

    ...

    @end
Connectez-vous ou Inscrivez-vous pour répondre.