OS X - NSViewController如何找到它的窗口?

AJ.*_*AJ. 45 macos cocoa cocoa-sheet

我有一个基于文档的核心数据应用程序.主文档窗口有许多视图,每个视图都由自己的自定义控制,NSViewController必要时可以切换.我希望每个视图控制器都能够从文档窗口下拉自定义模式表.但是因为视图是分开的而不是在MyDocument nib我不能将视图链接到IB中的文档窗口.这意味着我打电话的时候

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

我供应零,mainWindow因此这张纸看起来很独立.

有什么建议?

非常感谢

Tom*_*ing 106

您可以使用 [[self view] window]

  • @JasonMurray你试过在NSViewController的viewWillAppear中调用self.view.window吗? (4认同)
  • 如果`self`没有`view`方法,那么它不是`NSViewController`. (3认同)
  • @AJ @TomDalling我的`[self view]`返回<NSView:0x6000001237a0>但是`[[self view] window]`返回null,不知道现在要做什么. (3认同)

小智 33

的确,这是self.view.window(斯威夫特).

这在viewDidLoad()和viewWillAppear()中可能是nil,但是在到达viewDidAppear()时正确设置.