macos - 在 NSDocument 的窗口中以模态方式呈现 View

标签 macos modal-dialog swift nswindow nsdocument

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

问题是,它总是显示为一个没有标题栏的独立 float 窗口。

我试图呈现的 View 包含在该 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 就好了。

最佳答案

好的。我想通了。

一开始。我们需要 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 必须对其过时的文档采取一些措施。

关于macos - 在 NSDocument 的窗口中以模态方式呈现 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959496/

相关文章:

macos - 如何在终端加载 I/O 套件驱动程序扩展?

xcode 卡在索引上 变通办法

swift - 使用 for 循环迭代核心数据?

ios - 将变量从 UIViewController 传递到自定义 UITableViewCell

xcode - 如何像Apple Mail一样获取url预览?

c++ - 如何尽可能以独立于平台的方式从 C++ 调用 .NET

macos - 是否可以以使用 getuid() 登录用户 ID 的 root 身份运行?

html - 输入非常小的 Bootstrap

javascript - IE 使用 Jquery UI 显示 .dialog 模式框时出现问题