web-dev-qa-db-fra.com

OS X - Comment un NSViewController peut-il trouver sa fenêtre?

J'ai une application de données de base basée sur les documents. La fenêtre principale du document comporte un certain nombre de vues, chacune étant contrôlée par sa propre variable NSViewController, commutée si nécessaire. Je veux que chacun de ces contrôleurs de vue puisse faire défiler une feuille modale personnalisée à partir de la fenêtre de document. Cependant, comme les vues sont séparées et non dans la MyDocumentnib, je ne peux pas lier la vue à la fenêtre de document dans IB. Cela signifie que lorsque j'appelle

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

Je fournis nil pour mainWindow et la feuille apparaît donc détachée.

Aucune suggestion?

Merci beaucoup

41
AJ.

Vous pouvez utiliser [[self view] window]

100
Tom Dalling

En effet, c'est self.view.window (Swift).

Cela peut être nul dans viewDidLoad () et viewWillAppear (), mais est défini correctement au moment où vous obtenez viewDidAppear ().

30
Tim Closs

Si votre contrôleur peut accéder à la sous-classe NSDocument , vous pouvez utiliser -windowForSheet

1
JeremyP

plus sur Tim Closs répondre:

-(void)viewDidAppear
{
    self.view.window.title = @"title-viewDidAppear"; //this only works when and after viewDidAppeer is called
}
-(void)viewWillDisappear
{
    self.view.window.title = @"title-viewWillDisappear"; //this only works before and when viewWillDisappear is called
}
0
user1105951