首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSWindow返回零(NSApplication)

NSWindow返回零(NSApplication)
EN

Stack Overflow用户
提问于 2015-07-17 02:24:48
回答 6查看 3.5K关注 0票数 11

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

代码语言:javascript
复制
let window = NSApplication.sharedApplication().mainWindow

我发现了类似的问题:

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

但做:

代码语言:javascript
复制
let window = (NSApplication.sharedApplication() as! NSArray).objectAtIndex(0)

似乎也没用。

我一定要在故事板上乱搞吗?

提前谢谢。

更新:

我实际上是想把目标-C的东西移植过来。

代码语言:javascript
复制
    NSWindow *mainWindow = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
    NSLog(@"%@", mainWindow.contentViewController);

当将viewDidLoad()块放入NSViewController中时,这会返回一个适当的值,因此我猜想NSApplication.sharedApplication()有问题。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-05-09 13:26:39

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

代码语言:javascript
复制
NSApp.activateIgnoringOtherApps(true)

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

票数 9
EN

Stack Overflow用户

发布于 2016-05-04 09:28:16

你可以这样做:

代码语言:javascript
复制
   func applicationDidBecomeActive(notification: NSNotification) {

        NSApplication.sharedApplication().mainWindow?.movable = false
    }
票数 2
EN

Stack Overflow用户

发布于 2015-07-17 03:39:22

来自医生们

当应用程序的情节提要或nib文件尚未完成加载时,此属性中的值为nil。当应用程序处于非活动状态或隐藏状态时,也可能是nil

因此,这是一个完全正常的事情发生,取决于情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31467531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档