在NSDocument的窗口中以模态方式呈现视图

时间:2014-07-25 15:40:38

标签: macos modal-dialog swift nswindow nsdocument

我有一个NSDocument子类,它有自己的xib文件。我也有一个NSViewController子类,它有自己的xib文件,我想以模态方式呈现它的视图,就像这个一样。 enter image description here

问题是,它总是将其显示为没有标题栏的单独浮动窗口。

我想要呈现的视图包含在该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,那没关系。

2 个答案:

答案 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。

相关问题