我遇到了无法访问应用程序主窗口的问题, 因为它返回 nil。
let window = NSApplication.sharedApplication().mainWindow
我发现了类似的问题:
How to get Main Window (App Delegate) from other class (subclass of NSViewController)?
但是在做:
let window = (NSApplication.sharedApplication() as! NSArray).objectAtIndex(0)
好像也没用。
我必须在 Storyboard 中乱搞吗?
提前致谢。
更新:
我实际上是在尝试从 Objective-C 移植一些东西。
NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
NSLog(@"%@", mainWindow.contentViewController);
当放入 NSViewController
的 viewDidLoad()
block 时,这会返回一个正确的值,所以我猜测 NSApplication 有问题。 sharedApplication()
.
最佳答案
如果主应用程序窗口在 macOS 上未激活,它也可以返回 nil。例如,我在制作拖放文件 uploader 时遇到了这个问题。如果窗口不在前面(在操作系统上),它将返回 nil。以下代码行将激活您的应用程序(置于最前面)
NSApp.activateIgnoringOtherApps(true)
在我的例子中,我还需要一个计时器来延迟对 mainWindow 的调用。
关于macos - NSWindow 返回 nil (NSApplication),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31467531/