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().
如果主应用程序窗口在macOS上不活动,它也可以返回nil.例如,当我制作拖放文件上传器时,我遇到了这个问题.如果窗口不在前面(在操作系统上),它将返回nil.以下代码行将激活您的应用程序(带到前面)
NSApp.activateIgnoringOtherApps(true)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我还需要一个计时器来延迟我对mainWindow的调用.