Problème d'appel de méthodes
Adau
Membre
Bonsoir,
Je me met à créer mes propres programmes maintenant.
En tant que bon novice, je commence avec des choses simples, mais qui évidemment ne marche pas.
Mon programme a beaucoup de NSTextField dont les valeurs servent à faire des calculs.
J'ai trois onglets, dont j'aimerai 3 objets de récupération de données et de calcul, un par onglet. L'affichage des resultats est commun aux onglets, et se fait via un 4ème objet, mon AppController.
Mon 4ème objet possède dont les 3 objets et appel les resultats des calculs. Mais impossible de lancer les méthodes.
Pour mieux comprendre, voici un programme super simple bouton/texte, mais avec deux controlleurs.
La commande [unObjet affichage] ne marche pas du tout.
Quel est le problème ?
Je me met à créer mes propres programmes maintenant.
En tant que bon novice, je commence avec des choses simples, mais qui évidemment ne marche pas.
Mon programme a beaucoup de NSTextField dont les valeurs servent à faire des calculs.
J'ai trois onglets, dont j'aimerai 3 objets de récupération de données et de calcul, un par onglet. L'affichage des resultats est commun aux onglets, et se fait via un 4ème objet, mon AppController.
Mon 4ème objet possède dont les 3 objets et appel les resultats des calculs. Mais impossible de lancer les méthodes.
Pour mieux comprendre, voici un programme super simple bouton/texte, mais avec deux controlleurs.
La commande [unObjet affichage] ne marche pas du tout.
Quel est le problème ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Rien ne dit que l'objet glissé dans le mainmenu.nib est l'objet appartenu par l'objet controlleur maitre.
Ceci veut dire qu'il ne peut n'y avoir qu'un seul objet qui interagit avec l'utilisateur ?
Il manque le fichier xib.
2. je pense qu'il y a beaucoup de boulot sur la compréhension du fonctionnement d'une appli sous cocoa.
Le peu qu'on peut déduire des quelques fichiers fournis :
Classe AAController : tu déclares une variable unObjet de classe AAObjet. Mais à aucun moment tu n'initialises cette variable unObjet.
On pourrait supposer qu'il s'agit d'un outlet (encore qu'il manque le mot clé IBOutlet pour en être sûr), mais dans ce cas :
-> AAController doit être instancié dans le nib/xib,
-> AAObjet doit être instancié dans le nib/xib,
-> une liaison outlet entre ces 2 instances doit être "tirée" dans le nib/xib,
-> une liaison action entre l'instance AAController et le bouton (?) doit être "tirée" dans le nib/xib.
Classe AAObjet : ici aussi, on ne sait pas si une vrai instance de cette classe existe.
Donc, comme précédemment :
-> AAObjet doit être instancié dans le nib/xib,
-> une liaison outlet entre cette instance et le champ NSTextField doit être "tirée" dans le nib/xib afin de "nourrir" l'outlet textField.
Si toutes ces simples conditions sont réunies, cela fonctionnera.
une liaison outlet entre ces 2 instances doit être "tirée" dans le nib/xib,
J'ai mis un IBOutlet devant le AAObjet dans AAControlleur, puis j'ai lié cette outlet à Objet dans le fichier nib.
Tout marche nickel maintenant.
En pièce-jointe, l'application telle que j'aurai du vous la donner. Et ci-dessus ma correction qui marche.
Merci beaucoup
Alors, pour correctement initialiser une variable d'instance, en l'occurrence tu n'as que deux solutions, la première, la plus simple, c'est de créer une nouvelle instance avec alloc+init dans la méthode -init de ton contrôleur... Le problème ici c'est que ça ne fera pas ce que tu veux.
La seule technique valable ici, c'est la deuxième, il suffit de mettre "IBOultet" devant la variable d'instance comme ton NSTextField dans l'autre classe, et de faire le lien dans IB...
C'est pas parce que ce n'est pas un object graphique que tu ne peux pas le lier dans IB. Pour fonctionner, il faut que l'instance (le cube bleu) de ta classe AAObjet soit référencé par ton instance AAController.