initialisation d'un NSTextField
tethys
Membre
Bonjour,
j'essaie d'initialiser mon Label dans initWithFrame de ma vue:
mais malgrè ça rien ne s'affiche au lancement de l'appli, où faut-il initialiser un NSTextField ?
j'essaie d'initialiser mon Label dans initWithFrame de ma vue:
<br /> [label setStringValue:@"init"];<br />
mais malgrè ça rien ne s'affiche au lancement de l'appli, où faut-il initialiser un NSTextField ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il faut donc le faire une fois que les objets ont tous été créés et liés entre eux:
- si la fenêtre est gérée par un NSWindowController: dans -windowDidLoad
- faute de mieux, dans -awakeFromNib
quand est-ce qu'on utilise un NSWindowController ?
c'est pour l'archivage ? ou dans l'architecture MVC ?
j'ai quand à moi un controlleur, mais qui dérive de NSObject, pour controller ce qu'affiche ma vue.
Fais ton initialisation dans ton controller.
Dès qu'on veut charger une fenêtre depuis un XIB.
Les applications simples n'ont souvent qu'une fenêtre qui contient toutes les vues. Dans ce cas, c'est NSApplication qui charge la fenêtre et le délégué de l'application qui gère les vues, mais il s'agit plutôt d'une exception.
En pratique, on utilise un NSWindowController pour chaque fenêtre, avec une fenêtre par xib.
Si le contenu de la fenêtre est composé d'un grand nombre de vue, alors il devient intéressant d'utiliser NSViewController.
Ce sont des contrôleurs, donc il font le lien entre le Modèle et les Vues.
Certainement pas pour l'archivage, qui fait partie de la couche Modèle. En général, il existe un objet "racine" pour le modèle. Celui-ci est habituellement maintenu par un NSDocument, ou par le délégué de l'application si l'appli n'a pas de notion de documents.
ça marche aussi.
La grosse différence de NSViewController avec un simple NSObject est qu'il hérite de NSResponder; c'est intéressant pour relayer les événements. Je ne veux pas entrer trop dans les détails ici, parce que ça exige de bien comprendre comment fonctionne la chaà®ne des répondeurs.