在我的macOS应用程序中,我有菜单项,这些菜单项也可以在主UI中复制。应用程序由主窗口及其委托和单个视图以及其视图控制器组成。在应用程序委托中,我捕获菜单项的click操作,然后需要将此事件发送到我的视图控制器,以便采取适当的操作并更新主UI。
问题是如何从应用程序委托访问我的视图控制器(NSViewController
)?
答案 0 :(得分:1)
如果您将window
作为IBOutlet
,则可以
var rootViewController: MyViewController? {
return window!.contentViewController as? MyViewController
}
func sendPressed(_ sender: Any?) {
rootViewController?.sendPressed()
}
如果您没有window
变量,则可以通过
NSApplication.shared.orderedWindows.first!
答案 1 :(得分:1)
实际上,您不需要引用控制器。有First Responder
IBActions
该操作将在实现该操作的响应者链的第一个对象中执行。