NSWindow返回nil(NSApplication)

Nao*_*Ida 6 macos nswindow swift

我遇到了一个问题,我无法访问我的应用程序的主窗口,因为它返回nil.

let window = NSApplication.sharedApplication().mainWindow
Run Code Online (Sandbox Code Playgroud)

我发现了类似的问题:

如何从其他类(NSViewController的子类)获取主窗口(App Delegate)?

但做:

let window = (NSApplication.sharedApplication() as! NSArray).objectAtIndex(0)
Run Code Online (Sandbox Code Playgroud)

似乎也没有用.

我是否必须在Storyboard中乱搞?

提前致谢.

更新:

我实际上是想从Objective-C移植一些东西.

    NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
    NSLog(@"%@", mainWindow.contentViewController);
Run Code Online (Sandbox Code Playgroud)

这将返回一个正确的值,当放入a中的viewDidLoad()块时NSViewController,所以我猜测有什么问题NSApplication.sharedApplication().

que*_*ful 7

如果主应用程序窗口在macOS上不活动,它也可以返回nil.例如,当我制作拖放文件上传器时,我遇到了这个问题.如果窗口不在前面(在操作系统上),它将返回nil.以下代码行将激活您的应用程序(带到前面)

NSApp.activateIgnoringOtherApps(true)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我还需要一个计时器来延迟我对mainWindow的调用.