我有一个简单的基于文档的Cocoa应用程序,它充当.wav文件的查看器,进行一些频率分析。我希望能够将从打开的文件中收集的数据导出到CSV中,以便在其他程序中进一步分析。
Cocoa中基于文档的应用程序框架允许您重写
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError要实现默认的保存/另存为...工作流,但我不想写我打开的文件。
最明显的做法是在我的文档中实现导出工作流,提供一个文件保存表,构建一些NSData,并将其写入文件路径,但是没有一种明显的方法可以将MainMenu nib中的出口连接到文档控制器上的操作。
那么,在基于文档的Cocoa应用程序中实现此类功能的公认方法是什么呢?
发布于 2009-04-20 22:43:19
您可以在MainMenu.nib的"First Responder“对象中创建一个名为"export:”的新操作,并连接到它。然后,在文档子类中实现export:方法。这将调用您的方法。
这样做的原因是,发送到魔术first responder对象的消息会经过整个响应器链,寻找处理它们的某个对象。响应器链中的一项是文档,因此当当前选择的控件、视图、superview、窗口等都不能处理消息时,文档就有机会了。(文档控制器也在该链上,因此您也可以使用它。)
看看Apple's responder chain docs --图1.10介绍了这条特殊的路径。
https://stackoverflow.com/questions/770370
复制相似问题