我正在尝试从OS X上的NSWindow
加载NSViewController
,我正在做以下事情:
private lazy var discoverable: DiscoverableWindow = {
return DiscoverableWindow.instanceFromNib()
} ()
静态方法instanceFromNib()
定义如下:
class func instanceFromNib() -> DiscoverableWindow {
var instance = DiscoverableWindow()
var objects: NSArray?
NSBundle.mainBundle().loadNibNamed("DiscoverableWindow", owner: instance, topLevelObjects: &objects)
return instance
}
我正在使用窗口显示我的NSViewController
:
NSApp.beginSheet(self.discoverable, modalForWindow: NSApplication.sharedApplication().mainWindow!, modalDelegate: nil, didEndSelector: nil, contextInfo: nil)
但是,当我加载它时,我看到以下内容:
有什么我做错了吗?为什么NSWindow
空白?我在这上面阅读了以下内容:
Cocoa - loadNibNamed:owner:topLevelObjects: from loaded bundle
你为什么不制作一个窗口控制器来处理DiscoverableWindow
?
创建NSWindowController
的子类,确保选中“还为用户界面创建xib文件”。在DiscoverableWindowController
xib中配置窗口,在窗口的属性检查器上取消选中“Visible At Launch”。
然后,在你的ViewController
:
@IBAction func showSheet(sender: NSButton) {
let discoverableWC = DiscoverableWindowController(windowNibName: "DiscoverableWindowController")
view.window?.beginSheet(discoverableWC.window!, completionHandler: nil)
}
通常,应用程序中的每个窗口都应由其自己的窗口控制器管理,让窗口控制器为您处理nib加载和实例化。