如何让mainMenu将所有动作发送到特定的NSWindowController?

时间:2012-07-13 10:53:57

标签: objective-c cocoa nswindow nsmenu nswindowcontroller

简短回答在标题内:)

解释:在我的MainMenu.xib我只有应用程序的主菜单,对于我打开的所有NSWindow,它必须相同。我要说的是,有一个特定的NSWindowController有关于何时必须启用菜单项的所有答案(通过case中的selector上的validateUserInterfaceItem}以及该怎么做一切行动。如果与NSWindow关联的NSWindowController目前正在关注,则没有问题,但当我专注于另一个NSWindow时,所有菜单都会显示为灰色。

我现在有了这个流程:MainMenu是通过引用info.plist作为主nib创建的,然后AppDelegate执行一些初始化内容并使用{{创建MainWinController 1}},在某个时刻MainWindow创建1 + MainWinController DetailsWinControllerDetailsWindow通过调用AppDelegate的每次函数来管理我的自定义菜单。

那么,我如何强制响应者链始终查询特定的MainWinControllerNSWindowController)?

1 个答案:

答案 0 :(得分:0)

你没有提供很多细节,也不清楚你想要实现的目标。

我的第一反应是,如果你想共享菜单项,你为什么要在MainWindow中创建多个窗口而不是视图?

假设您的MainWindow和DetailsWindow都实现相同的选择器,您可以将菜单操作定向到第一响应者

要在InterfaceBuilder中添加DetailsWinController,请从对象库中拖动NSObject,然后在Identity Inspector中将其类更改为DetailsWinController类。

如果您的主菜单包含DetailsWindow的不同项目,只需将这些项目连接到该实例中的操作。

注意如果您这样做,则不应在代码中创建DetailsWinController。 如果您真的想在代码中执行此操作,则需要在代码中向菜单添加操作和目标。