Kyl*_*KIM 2 macos cocoa nswindow nsstoryboard
我从一个故事板项目开始。我把菜单栏项目。单击菜单栏项时,会在 AppDelegate.swift 中触发以下方法。
func setWindowVisible() {
NSApp.activateIgnoringOtherApps(ture)
NSApp.mainWindow?.makeKeyAndOrderFront(self)
}
Run Code Online (Sandbox Code Playgroud)
这使我的应用程序位于前面。但是一旦我单击关闭按钮(窗口上的红色按钮),它就永远不起作用。
无论我关闭窗口,它过去都可以在基于非故事板的项目中工作。
我已经设定
NSApp.mainWindow?.releasedWhenClosed = false
Run Code Online (Sandbox Code Playgroud)
在 applicationDidFinishLaunching() 中
有人可以帮我吗?
设置没有任何效果,因为此时该releasedWhenClosed属性为零。\xe2\x86\x92 该方法执行后创建窗口。applicationDidFinishLaunchingmainWindow
releasedWhenClosed当在 Interface Builder 中创建窗口时,无论如何,它都默认为 false。
关闭窗口后,mainWindow 属性可能为零,因为这样就不再有 mainWindow 了。来自文档:
\n\n\n\n\n当 app\xe2\x80\x99s Storyboard 或 nib 文件尚未完成加载时,此属性中的值为 nil。当应用程序处于非活动状态或隐藏时,它也可能为零。
\n
我能够通过从 数组中访问窗口来再次显示窗口(关闭后windows)NSApp。
NSApp.activateIgnoringOtherApps(true)\nNSApp.windows[0].makeKeyAndOrderFront(self)\nRun Code Online (Sandbox Code Playgroud)\n\n如果您有多个窗口,您需要在数组中找到正确的一个。
\n| 归档时间: |
|
| 查看次数: |
3217 次 |
| 最近记录: |