不同笔尖的主菜单

时间:2012-01-16 13:10:50

标签: objective-c macos cocoa

我有一个带有ManMenu.xib的Cocoa应用程序,其中存储了主菜单以及处理我的应用程序的不同任务的几个xib中的不同其他子视图。那么如何让我的子xibs或者更确切地说他们的NSViewControllerController从菜单中接收动作呢?

我有一个想法,但我不知道它是否是正确的方法:我继承NSViewController并添加一些操作,如 - (IBAction)撤消或 - (IBAction)重做使用它的实例作为文件所有者。此外,我添加了一个指向我的app委托的指针,指向实际视图,或者更确切地说是它的控制器,菜单将动作发送到该指针。

明智的解决方案?

1 个答案:

答案 0 :(得分:0)

您应该将菜单项连接到First Responder。然后,他们的行动信息将沿着响应者链传播,直到他们达到响应他们的内容为止。

您需要通过将视图控制器设置为响应者链中其他内容的下一个响应者来确保您的视图控制器位于响应者链中。我建议使用窗口控制器。

说到窗口控制器,您可能应该在那里处理撤消而不是在视图控制器中 - 对于同一窗口中的不同视图来说,使用不同的撤消列表会让人感到困惑。我能想到的唯一例外是受控视图对应于文档选项卡,如Photoshop或Xcode。