如何在 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
标志。否则你的代码有效。
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
标志。否则你的代码有效。