1

我有一个基于 Cocoa 文档的应用程序,它(目前至少)用作基本的文本编辑器。它保存 .txt、.rtf 和 .rtfd,并加载它们以及 .doc 和 .docx。如果我打开一个 .doc 或 .docx 文件并对其进行编辑,然后尝试关闭它,它会提醒我保存,但保存选项不会做任何事情,因为该应用程序只是这些类型文件的查看器。对于只能查看的类型(如 .doc 和 .docx),如何将该功能设置为“另存为”?

4

2 回答 2

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您退出应用程序并且控制器枚举窗口以查看更改。

于 2010-09-04T13:35:00.383 回答
0

不完全清楚您是否真的想在编辑后写入更新的文件,或者阻止编辑从而防止警告文档已被修改。

要看不到保存警告,首先您需要将文档类型角色设置为“查看者”,如果它恰好是“编辑者”。这是在目标设置中。

然后你需要 1. 确保文档的内容没有改变,和/或 2. 告诉文档不要费心将自己显示为脏

但是,如果您想允许编辑和保存文档,则必须以正确的格式写回这些文件。这很重要,除了 TextEdit 的源代码可用并包含在 Xcode 中。但粗略一看,NSDocument 似乎已经支持 .doc 和 .docx。

您将在 /Xcode/Examples 中找到 TextEdit 的项目文件夹。

于 2010-07-21T23:35:33.337 回答