我一定错过了一些简单的东西,但我看不到它。首先,设置:
DATreeView
,NSView
的子类DATreeViewController
,NSViewController
的子类MainMenu.xib
有一个DATreeViewController
实例,该实例配置为从DATreeView.xib
加载 ViewMainMenu.xib
还有一个DendreaAppDelegate
实例,它有一个DATreeViewController
导出(连接到MainMenu.xib)。 xib
的DATreeViewController
实例。Do Something!
,一个菜单项,用于向第一响应者发送doSomething:
消息。- 并非巧合的是,
DATreeViewController
有一个名为doSomething:
的操作。
我想要的是 Do Something!
菜单项触发 DATreeViewController
上的 doSomething:
操作,让我们假装我可以'不只是直接设置目标/操作连接。我会在这里停下来问,我的设计完全错误吗?我想做的事是愚蠢/邪恶/可能会让我在上帝眼中蒙羞吗?
没有?伟大的。现在,在我的一生中,我无法使菜单项处于事件状态。我正在 Snow Leopard 上执行此操作,如果这有什么不同的话。
为了实现NSView
和NSViewController
之间的良好集成,例如管理响应者链,我已经关注 Matt Gallagher's example ,有一个实质性的变化:在 NIB 加载过程中,NSView
似乎没有收到 setViewController:
消息,因此我自己在 DATreeViewController< 中发送该消息
的 loadView
消息。据我所知,在 applicationDidFinishLaunching:
NSView *view = self.treeViewController.view;
[self.window.contentView addSubview:view];
响应者链已按预期设置,即:
NSWindow < NSView < DATreeViewController < DATreeView
我的期望是,作为DATreeViewController
是响应者链的一部分,并且作为它响应doSomething:
,并且作为它不实现任何验证,我所要做的就是使用 Interface Builder 将 Do Something!
菜单项连接到第一响应者代理,并使用 doSomething:
作为其操作,并且菜单项将自动激活。
我做错了什么?感谢大家的宝贵帮助!
最佳答案
您的观点是否接受并成功成为第一响应者?
关于objective-c - 在 View Controller 中处理发送给第一响应者的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1501804/