我有一个NSDocument
子类,它有自己的xib文件。我也有一个NSViewController
子类,它有自己的xib文件,我想以模态方式呈现它的视图,就像这个一样。
问题是,它总是将其显示为没有标题栏的单独浮动窗口。
我想要呈现的视图包含在该xib文件的窗口中。是的,它是Mac OS X 10.10。这是代码。
@IBAction func didPressEditF(sender: AnyObject) {
let controller = ViewController(nibName: "ViewController", bundle: nil)
let window = self.windowControllers[0].window as NSWindow
window.beginSheet(controller.view.window, completionHandler: didEndPresentingF)
}
如果你帮我使用Objective-C,那没关系。
答案 0 :(得分:3)
好的。我想通了。
起初。我们需要ViewController
类的属性,因此在显示之后它不会被释放。
var controller: ViewController?
然后我们需要一个返回当前文档窗口的方法。不知怎的self.windowControllers[0].window as NSWindow
不起作用。
func window() -> NSWindow {
let windowControllers = self.windowControllers
let controller = windowControllers[0] as NSWindowController
let window = controller.window
return window
}
最后,打开工作表窗口的代码如下所示:
@IBAction func didPressEditF(sender: AnyObject) {
controller = ViewController(nibName: "ViewController", bundle: nil)
self.window().beginSheet(controller!.view.window, completionHandler: didEndPresentingF)
}
Apple已经对他们过时的文档做了些什么。
答案 1 :(得分:0)
您可以调用windowForSheet(NSDocument上的方法),而不是浏览文档的窗口控制器。例如。 self.windowForSheet。