2009-03-22 7 views
25

J'ai une NIB qui contient deux fenêtres, l'une est la fenêtre principale de l'application visible au lancement et l'autre est une feuille personnalisée (et donc pas visible au lancement). Lorsque la feuille est nécessaire à mes appels du contrôleur:Pourquoi ma feuille n'est-elle pas attachée à la fenêtre pour laquelle elle est exécutée?

[NSApp beginSheet: sheetWindow modalForWindow: mainWindow modalDelegate: self didEndSelector: @selector(didEndSheet:returnCode:contextInfo:) contextInfo: nil];

qui affiche la fenêtre de feuille et commence une session modale, mais la fenêtre a une norme barre de titre Aqua, n'est pas « connecté » à la fenêtre principale et peut être déplacé comme une fenêtre normale. Inutile de dire que ce n'est pas souhaitable :-). Pourquoi la fenêtre de feuille ne «sort» pas de la fenêtre pour laquelle elle est lancée, comme le font habituellement les feuilles lorsqu'elles sont commencées de cette manière? Je me demandais si le fait que je commençais la feuille à l'intérieur du -awakeFromNib du contrôleur pouvait avoir un effet, alors j'ai déplacé la feuille vers l'action d'un bouton que je pourrais déclencher plus tard. Cela n'a pas changé le comportement. Je n'ai pas pensé à autre chose à essayer. Je cible le SDK 10.5, en utilisant Xcode 3.1.

Modifier: il semble donc que j'ai créé une boîte de dialogue modale; Les feuilles et les boîtes de dialogue app-modales sont toutes deux démarrées avec la méthode -beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:. Mais comment est-ce que j'indique que ma fenêtre devrait être une feuille et pas un un dialogue modal?

+0

Vérifiez que mainWindow n'est pas vide. –

+0

Je ne vois rien de mal à ce sujet, peut-être que le contexte pourrait aider. –

+0

Vous devriez faire une réponse, Nathan. C'est presque certainement vrai. – Chuck

Répondre

17

Si mainWindow est nul, la feuille sera affichée en tant que fenêtre/boîte de dialogue.

90

Cela me est arrivé, il y a quelques jours:

  • Vous avez oublié de régler la sortie de la fenêtre de votre contrôleur de fenêtre (le propriétaire du fichier du fichier Nib). Comme indiqué par Nathan, vous pouvez voir que la méthode -[NSWindowController window] renvoie zéro.
  • Vous devez également décocher l'option Visible au lancement de la feuille.
+18

"Visible au lancement" s'est avéré être mon problème - la feuille est apparue au bon moment, mais déconnecté de sa fenêtre, et ne disparaitrait pas malgré mon ordre order:. Merci de l'avoir posté! –

+12

"Visible au lancement" était en effet mon problème aussi. Réponse très utile – Monolo

+3

Visible au lancement était mon problème aussi! – logancautrell

Questions connexes