initialisation d'un NSTextField

tethystethys Membre
08:40 modifié dans API AppKit #1
Bonjour,
j'essaie d'initialiser mon Label dans initWithFrame de ma vue:
<br />	[label setStringValue:@&quot;init&quot;];<br />

mais malgrè ça rien ne s'affiche au lancement de l'appli, où faut-il initialiser un NSTextField ?

Réponses

  • CéroceCéroce Membre, Modérateur
    08:40 modifié #2
    C'est normal, les outlets ne sont pas encore fixées au moment de l'init: on est justement en train de créer les objets.

    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
  • tethystethys Membre
    08:40 modifié #3
    merci céroce, ce sera donc 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.
  • mpergandmpergand Membre
    janvier 2012 modifié #4
    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.
  • CéroceCéroce Membre, Modérateur
    08:40 modifié #5
    dans 1327355176:

    quand est-ce qu'on utilise un NSWindowController ?

    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.

    dans 1327355176:

    c'est pour l'archivage ? ou dans l'architecture MVC ?

    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.

    dans 1327355176:

    j'ai quand à  moi un controlleur, mais qui dérive de NSObject, pour controller ce qu'affiche ma vue.

    ç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.
Connectez-vous ou Inscrivez-vous pour répondre.