从 NSViewController 在 OS X 上加载笔尖
Loading nib on OS X from NSViewController
我正在尝试从 OS X 上的 NSViewController
加载 NSWindow
,我正在执行以下操作:
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
}
我正在使用 window 显示我的 NSViewController
:
NSApp.beginSheet(self.discoverable, modalForWindow: NSApplication.sharedApplication().mainWindow!, modalDelegate: nil, didEndSelector: nil, contextInfo: nil)
但是,当我加载它时,我看到以下内容:
我是不是做错了什么?为什么 NSWindow
是空白的?我阅读了以下内容:
Cocoa - loadNibNamed:owner:topLevelObjects: from loaded bundle
Cocoa: NSApp beginSheet sets the application delegate?
你为什么不制作一个 window 控制器来处理 DiscoverableWindow
?
创建 NSWindowController
的子类,确保选择 "Also create xib file for user interface"。在 DiscoverableWindowController
xib 中配置您的 window,在 window.
的属性检查器中取消选中 "Visible At Launch"
然后,在您的 ViewController
:
@IBAction func showSheet(sender: NSButton) {
let discoverableWC = DiscoverableWindowController(windowNibName: "DiscoverableWindowController")
view.window?.beginSheet(discoverableWC.window!, completionHandler: nil)
}
一般来说,您应用中的每个 window 都应由其自己的 window 控制器管理,让 window 控制器为您处理 nib 加载和实例化。
我正在尝试从 OS X 上的 NSViewController
加载 NSWindow
,我正在执行以下操作:
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
}
我正在使用 window 显示我的 NSViewController
:
NSApp.beginSheet(self.discoverable, modalForWindow: NSApplication.sharedApplication().mainWindow!, modalDelegate: nil, didEndSelector: nil, contextInfo: nil)
但是,当我加载它时,我看到以下内容:
我是不是做错了什么?为什么 NSWindow
是空白的?我阅读了以下内容:
Cocoa - loadNibNamed:owner:topLevelObjects: from loaded bundle
Cocoa: NSApp beginSheet sets the application delegate?
你为什么不制作一个 window 控制器来处理 DiscoverableWindow
?
创建 NSWindowController
的子类,确保选择 "Also create xib file for user interface"。在 DiscoverableWindowController
xib 中配置您的 window,在 window.
然后,在您的 ViewController
:
@IBAction func showSheet(sender: NSButton) {
let discoverableWC = DiscoverableWindowController(windowNibName: "DiscoverableWindowController")
view.window?.beginSheet(discoverableWC.window!, completionHandler: nil)
}
一般来说,您应用中的每个 window 都应由其自己的 window 控制器管理,让 window 控制器为您处理 nib 加载和实例化。