我一定想念一些简单的东西,但看不到。首先,设置:DATreeView,NSView的子类DATreeViewController,NSViewController的子类MainMenu.xib具有DATreeViewController的实例,该实例被配置为从DATreeView.xib加载视图MainMenu.xib还具有DendreaAppDelegate实例,该实例具有DATreeViewController出口(已连接到MainMenu.xib的DATreeViewController实例。Do Something!,一个菜单项,已连接以将doSomething:消息发送给第一响应者。并非巧合的是,DATreeViewController具有一个称为doSomething:的动作。我想要的是Do Something!菜单项触发doSomething:上的DATreeViewController动作,让我们假设我不能直接设置目标/动作连接。我将在这里停下来询问,我的设计完全错误吗?我在做愚蠢/邪恶/可能在我神眼中羞辱我的事情吗?没有?大。现在,为了我的生命,我无法使菜单项处于活动状态。如果有任何不同,我将在Snow Leopard上执行此操作。为了在NSView和NSViewController之间实现良好的集成,例如在管理响应者链时,我遵循Matt Gallagher's example进行了实质性更改:在NIB加载过程中,NSView似乎都没有收到setViewController:消息,因此我自己在DATreeViewController中发送该消息。 s loadView消息。据我所知,在applicationDidFinishLaunching:中运行以下代码后NSView *view = self.treeViewController.view;[self.window.contentView addSubview:view];响应者链已按预期设置,即:NSWindow < NSView < DATreeViewController < DATreeView我的期望是,作为DATreeViewController是响应者链的一部分,并且作为对doSomething:的响应,并且因为它未实现任何验证,所以我要做的就是使用Interface Builder来连接菜单项添加到First Responder代理,其操作为Do Something!,并且该菜单项将自动处于活动状态。我究竟做错了什么?谢谢大家的宝贵帮助! (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您的观点是否接受并成功成为第一响应者? (adsbygoogle = window.adsbygoogle || []).push({}); 10-08 20:02