2010-04-12 4 views
0

J'ai une application multi-documents. Je souhaite extraire des données de chacun de ces documents et refléter un sous-ensemble des données dans une fenêtre HUD globale de «gestion» qui peut s'asseoir sur un autre écran. Ai-je besoin d'un objet global de mon HudController dans chaque instance de document ou existe-t-il un moyen de déléguer toutes les informations des divers documents au HudController en tant que sa propre instance?aide conceptuelle pour l'envoi de données à hud global, Cocoa

merci pour toute aide!

Répondre

1

Y a-t-il un moyen de déléguer toutes les informations des divers documents au HudController comme sa propre instance?

Ceci est un cas où un singleton est approprié. Il y a quelques autres exemples de panneaux similaires; le panneau de polices et le panneau de couleurs fonctionnent tous les deux de la même manière. Donc, faites de votre HudController un singleton (j'ai suggestions on how best to do that).

Ensuite, demandez au HudController de surveiller les documents pour les changements. Les détails peuvent varier, mais vous souhaiterez probablement donner à la classe document (es) des propriétés publiques à travers lesquelles accéder au modèle, puis faire en sorte que HudController surveille l'ouverture et la fermeture des fenêtres de document; Lorsque l'un d'entre eux se produit, faites en sorte que le HudController commence ou termine observing les propriétés du document correspondant de chaque fenêtre.

Tant que vous modifiez les valeurs des propriétés d'une manière compatible avec KVO, la modification entraîne automatiquement une notification au HudController, après quoi vous réagissez à la modification en mettant à jour ce que vous affichez dans la fenêtre HUD.

+0

merci! également trouvé this-> http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html – theprojectabot