2012-01-22 3 views
0

Quelle est la meilleure façon de basculer entre plusieurs styles de fenêtres principales dans le cacao? Je veux dire quelque chose comme iTunes avec sa vue de mini-joueur et sa vue de taille normale. Je veux mettre en page différents fichiers nib et laisser l'utilisateur choisir entre le plus petit ou le plus grand avec plus de détails.
Ai-je besoin d'un NSWindowController ou est-il autorisé à charger dans le grué délégué App comme ceci:
[NSBundle loadNibNamed:@"BigWindow" owner:self];Gérer plusieurs styles de la fenêtre principale dans le cacao

Répondre

0

Vous devriez toujours utiliser NSWindowController pour charger une pointe contenant une fenêtre. C'est parce que NSWindowController gère la gestion de la mémoire nib pour vous, ce qui est plutôt pénible.

Si vous voulez simplement charger une vue à partir d'une plume, utilisez plutôt NSViewController.

+0

hmm merci, j'essaie de partager une certaine logique entre les fenêtres. Les deux fenêtres font la même chose, elles ont juste une taille et un look différents. Lorsque j'utilise un NSWindowController pour chaque fenêtre (fichier xib) et que j'assigne le délégué de l'application, j'ai une instance du délégué de l'application pour chaque contrôleur de fenêtre. Je pense que je supervise quelque chose. Il doit y avoir un moyen simple de le faire (comme cela est fait dans les applications en plein écran avec une mise en page différente). – stronzo

+0

Votre contrôleur d'application doit instancier les contrôleurs de fenêtre par programme et conserver une référence à eux (un ivar). Que voulez-vous dire par "affecter le délégué de l'application"? –

+0

Mon contrôleur d'application et son délégué sont les mêmes. J'instancie un contrôleur de fenêtre et l'ai obtenu comme un ivar du délégué. Dans le fichier xib, j'ai un objet délégué d'application pour établir les connexions aux IBActions dans le délégué de l'application. Quand je casse une méthode à partir de la fenêtre, je vois que les délégués ivars ont l'adresse 0x0. le délégué de l'application a lui-même une autre adresse que dans la méthode 'appDidFinishLoading'. Quand j'appelle une méthode du menu principal, tout va bien. J'ai donc foiré quelque chose. Est-ce mal d'avoir l'application déléguée dans chaque xib pour appeler l'IBActions? – stronzo

Questions connexes