我有一个基于Cocoa文档的应用程序(目前至少)作为基本文本编辑器。它保存了.txt,.rtf和.rtfd,并加载了.doc和.docx。如果我打开.doc或.docx文件并进行编辑,然后尝试关闭,它会提醒我保存,但是保存选项不会执行任何操作,因为应用程序只是这些类型文件的查看器。对于只能查看的类型,如.doc和.docx,如何将该功能设为“另存为”?
答案 0 :(得分:1)
将自定义saveDocumentWithDelegate:::
中的NSDocument
覆盖为以下内容:
- (void)saveDocumentWithDelegate:(id)delegate didSaveSelector:(SEL)didSaveSelector contextInfo:(void *)contextInfo
{
if (delegate != nil)
{
// use delegate or contextInfo to decide what operation you need to use...
[self runModalSavePanelForSaveOperation:NSSaveAsOperation
delegate:delegate
didSaveSelector:didSaveSelector
contextInfo:contextInfo];
}
else
{
[super saveDocumentWithDelegate:delegate
didSaveSelector:didSaveSelector
contextInfo:contextInfo];
}
}
默认情况下,如果您退出应用程序并且控制器枚举窗口以查看更改,则delegate
在窗口关闭时为NSWindow
或NSDocumentController
。
答案 1 :(得分:0)
如果您确实想在编辑后编写更新的文件,或者阻止编辑,从而防止警告文档已被修改,则不完全清楚。
要看不到“保存”警告,首先您要将文档类型角色设置为“查看器”(如果它恰好是“编辑器”)。这是在目标设置中。
然后你需要 1.确保文件内容不变,和/或 2.告诉文件不要打扰自己显示为脏
但是,如果要允许编辑和保存文档,则必须以适当的格式写回这些文件。这是非常重要的,除了TextEdit的源代码可用并包含在Xcode中这一事实。但从粗略的一瞥,似乎NSDocument已经支持.doc和.docx。
您可以在/ Xcode / Examples中找到TextEdit的Project文件夹。