Accéder à une outlet depuis d'autres frame

kollyv

Membre confirmé
17 Avril 2007
31
0
Bonjour,

Je crée une fenêtre depuis IB. A l'interieur un NSTextView qui me servira de debug. Je crée une outlet vers cette NSTextView.

J'aimerais maintenant pouvoir y accéder depuis différents endrois.

La méthode main

La fenêtre principale qui se charge au début de l'aplpication.

Comme je ne m'occupe pas d'instancier la fenêtre, comment faire pour pouvoir y accéder ?
 

ntx

Membre vénérable
Club MacG
15 Octobre 2004
12 128
376
92
Il faudrait faire une instance d'une classe via un singleton afin qu'elle soit visible dans tout le programme et que ton outlet lise et écrive dans cet objet. :zen:
 

kollyv

Membre confirmé
17 Avril 2007
31
0
Arf je ne vois pas bien comment faire :/ Dans un premier temps j'ai créé une fenêtre manuellement pa ligne de code depuis ma méthode main. J'ai donc l'objet et peux y accéder sans problème.

Je suis encore loin d'êre un expert en obj-c mais je trouve bizzarre de ne pas devoir sois-même instanier une frame
 

Céroce

Membre actif
Si si, c'est possible en codant de créer une fenêtre et d'insérer une vue dedans (les frames, ça existe pas en Cocoa, ce sont des Views), mais c'est plus facile de le faire avec IB.

Pour respecter le principe du Modèle-Vue-Contrôleur (et tu y es obligé par Cocoa): tu crées dans IB un objet de type NSObject (le contrôleur) qui te servira de singleton, et tu tires une outlet depuis la fenêtre. Ton NSObject comportera une variable globale ou une méthode pour accéder au pointeur sur la NSWindow.


Mais franchement, je ne perçois pas l'intérêt de la manœuvre. Si c'est pour afficher des messages de debug, utilise la fonction NSLog:

Bloc de code:
 NSLog(@"Oh le beau message");

Elle prend les mêmes paramètres que printf().
 

kollyv

Membre confirmé
17 Avril 2007
31
0
Ok j'ai compris merci :) Je veux simplement avoir un debug dans une jolie frame lors des prochains tests sur d'autres machines.

Je ne voyais pas bien comment mettre en place le modèle mvc, maintenand c ok et je me rend compte que le système via IB est plutôt pas mal.

Thx
 

Céroce

Membre actif
Sache que tu peux laisser les NSLog même dans un programme final. Ceux-ci apparaitront dans l'application Console, au lieu de s'afficher sous Xcode ou le terminal. Je crois qu'il n'y a pas de manip spéciale à faire.
Ce que je veux dire par là, c'est juste qu'il est inutile d'implémenter une fenêtre de log, c'est déjà prévu... Après, c'est ton développement à toi, et si tu préfères une belle fenêtre, fais-le.

Bon courage dans tes prochains développements, en tout cas.