如何在 MacOS 中正确显示 xib 文件的模态视图?

How to show modal view from a xib file in MacOS correctly?

OS: MacOS 语言:Swift 4+

我想要的

我想从主 window 中显示一个简单的自定义模式视图。我在一个单独的 .xib 文件中创建了这个自定义模式视图,其中包含 NSWindowController class.

在 Xcode 我添加了一个新文件 --> CocoaClass --> NSWindowController 的 Subclass --> 勾选 "Also create XIB file for user interface"

然后我添加了一个按钮并生成了一个操作处理程序,它只在调试控制台上打印文本。这是为了测试按钮按下是否被正确处理。

为了从我的主 window 显示模态视图,我在按下按钮时执行了以下代码:

let modal = SimpleModal(windowNibName: "SimpleModal")
        self.view.window?.beginSheet(modal.window!, completionHandler: { response in
            print("Finished device selection")
        })

这确实显示了视图,但不是模态视图。它只是显示我的主 window 旁边的视图,当我单击模态视图中的按钮时,模态视图也不会对鼠标单击事件做出反应。

我不知道该怎么做,所以如果您知道该怎么做,请回答我。

注意:

当模态视图出现时,主 window 应该没有响应,直到用户关闭模态视图。这就像将焦点从主 window 移动到模态视图。

我的演示项目的来源: OSXModalView

您必须在 SimpleModal.xib 中的 window 对象的属性检查器中删除 Visible At Launch 标志。否则你的代码有效。