如何解决如何让多个窗口执行相同的菜单项操作?
我已经知道如何让主窗口为 NSMenuItem
中的任何 NSMenu
执行操作,包括 NSToolbarItem
中的 NSToolbar
。
class MainWindowController: NSWindowController {
// ...
@IBAction func doSomethingIncredible(_ sender: Any?) {
// ...
}
}
这对于单窗口应用程序来说很容易,但我的应用程序支持多个窗口。
但是如何让除主窗口之外的其他窗口访问甚至验证来自 NSMenuItem
的 NSMenu
?
Safari 就是一个例子。它支持多个窗口。您可以选择 Open Location...(⌘L)、New Tab (⌘T)、Show Sidebar (⇧⌘L) 等。它会在焦点窗口上执行操作。它与主窗口无关。它可以在任何窗口上完成。如何为我的应用执行此操作?
class AnotherWindowController: NSWindowController {
// ...
@IBAction func doSomethingIncredible(_ sender: Any?) {
// ...
}
}
当 MainWindowController
和 AnotherWindowController
之一是键聚焦窗口时,NSMenuItem
和 NSMenu
如何从 {{1}} 的 {{1}} 之一执行相同的操作?
解决方法
不是将菜单项硬连接到特定控制器,而是将其连接到 First Responder(红色立方体)。
响应者链中响应选择器的第一个对象(通常是最前面的窗口)捕获操作并执行它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。