2011-10-17 5 views
1

J'ai un fichier nib qui a un tas de vues et d'objets personnalisés. L'un de ces objets est un objet de contrôleur personnalisé. Dans sa méthode awakeFromNib, je veux accéder à la fenêtre qui contient toutes ces choses. Je ne suis pas sûr de savoir comment obtenir la fenêtre à ce stade. Toutefois, cet objet personnalisé a une sortie vers une vue. Je sais que vous pouvez obtenir la fenêtre d'appel de [fenêtre nameOfView] mais pour une raison quelconque, à ce stade, nil est retourné pour la fenêtre, même si la vue est non nulle. À quel moment la fenêtre sera-t-elle non nulle?NSWindow est nul après awakeFromNib

En note secondaire, si je passe la fenêtre en paramètre à cet objet personnalisé qui est chargé à partir d'un fichier .nib, dois-je m'inquiéter de le libérer/le conserver? Comment la gestion de la mémoire fonctionnera-t-elle avec cette NSWindow dans mon objet chargé à partir d'une plume?

+0

Votre fichier nib inclut-il une fenêtre? –

+0

La fenêtre est créée par programmation. – JPC

Répondre

2

Si je vous ai bien compris, vous ne serez pas en mesure de le faire pendant le processus de chargement de pointe:

  1. Certains contrôleur (appelons-le le contrôleur maître) déclenche la charge de ce fichier nib;
  2. awakeFromNib est envoyé aux objets à l'intérieur de ce fichier nib, y compris votre objet contrôleur personnalisé;
  3. Le contrôleur maître obtient une référence à nameOfView (éventuellement via le contrôleur personnalisé) et l'ajoute à la hiérarchie d'affichage d'une fenêtre.

Chargement d'un fichier contenant nib vues ne pas ajouter automatiquement ces vues à la hiérarchie de la vue d'une fenêtre, ce qui explique pourquoi [nameOfView window] retours nilawakeFromNib la mise en œuvre de votre contrôleur personnalisé. Comme à l'étape 1 il y a un contrôleur maître qui est chargé de déclencher la charge de ce fichier nib, je suppose que ce contrôleur maître est celui responsable de l'ajout de vues à une fenêtre. Demandez au contrôleur maître d'envoyer un message au contrôleur personnalisé lorsque cela se produit afin que votre contrôleur personnalisé sache quand nameOfView a été ajouté à une fenêtre.

+0

Je vais essayer, merci – JPC

Questions connexes