2010-06-18 10 views
1

j'ai deux fichiers nib - Main.nib et Preference.nib Dans le fichier Main.nib j'ai une instance de NSView classe. Sa fenêtre a un NSPopUpButton qui en cliquant sur montre un menu. Dans le menu, j'ai l'élément de menu Préférences. L'élément de menu en cliquant sur affiche un panneau de préférences contenant un élément de puits de couleur. En cliquant bien sur la couleur, un panneau de couleur est affiché pour choisir la couleur. Le problème est de savoir comment appliquer cette couleur à la fenêtre principale de l'application.objets sur un Accès fichier nib à partir d'un autre fichier nib

Ma fenêtre de panneau de préférences est dans le fichier Preference.nib. Le problème est donc d'accéder à NSView à partir d'une autre fenêtre Nib.

Est-il possible que je puisse établir une connexion entre le panneau de préférence et ma fenêtre principale de l'application (NSView)

Répondre

2

Tu penses à ce au mauvais niveau. NSView et NSWindow sont des objets de vue dans le modèle Modèle-Vue-Contrôleur et ne doivent pas être utilisés pour stocker des données d'application. La couleur que vous sélectionnez dans votre panneau de préférences est celle des données de l'application et doit être stockée dans un objet modèle approprié.

Vous pouvez, par exemple, utiliser des liaisons pour lier correctement la couleur à l'objet NSUserDefaultsController afin de stocker ces données (en supposant qu'il s'agit d'un paramètre à l'échelle de l'application). Vous n'avez pas dit exactement à quoi sert la couleur dans votre fenêtre principale, mais si l'objet qui l'utilise est conscient, vous pouvez lier cet objet à la même valeur sur le NSUserDefaultsController et vous avez terminé.

Sinon, vous pouvez répondre au message d'action du puits de couleur pour stocker la couleur dans un emplacement approprié, puis envoyer une notification en utilisant NSNotificationCenter pour indiquer aux autres objets que la couleur a changé. Vous devrez vous inscrire à tout objet qui doit prendre des mesures lorsque la valeur change pour votre message de notification.

Voici quelques ressources:

Questions connexes