我正在尝试在情节提要中打开 NSWindow。
我已正确实例化控制器,窗口打开但立即消失。
var sb : NSStoryboard?
var vc : NSWindowController?
@IBAction func openWindow(sender: AnyObject) {
let sb = NSStoryboard(name: "NewStoryBoard", bundle: nil)
let vc = sb.instantiateControllerWithIdentifier("windowController")
vc.showWindow(nil)
}
如果变量位于 func 内部,我会理解这种行为。在这种情况下,ARC 将杀死该窗口。
在我的示例中,变量位于 func 之外,这应该可以防止变量被 ARC 杀死。
我的方法有什么问题吗?
谢谢!
实际上,在您的示例中,您有两组不同的变量。你的let sb = ...
and let vc = ...
创建局部变量(具有相同的名称),并在函数中使用时覆盖外部变量。您想要删除 let 限定符,以便它将值分配给函数外部的变量。
如果您同时删除let
限定符,打开 now 选项,并强制向下转换,那么你的窗口就会保持打开状态。
注意:如果您不再需要故事板,您实际上可以删除var sb...
并保留let sb...
以便少一件需要打开的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)