问题标签 [document-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 创建或打开新文档时如何关闭 NSPanel?
我正在开发一个基于文档的 Cocoa 应用程序。启动时,用户会看到一个“欢迎面板”(类型为NSPanel
),其中包含用于“创建新文档”和“打开现有文档”等常见操作的按钮。这些动作分别链接到第一响应者newDocument:
和openDocument:
动作,就像文件菜单中的匹配项一样。
一切都按预期工作......有三个警告:
- 创建或打开新文档时,欢迎面板不会关闭。
- 文档窗口在创建时没有焦点。
- 打开的文档窗口没有窗口标题栏中显示的打开文件;同样,不会像预期的那样创建带有“Untitled”、“Untitled 2”、“Untitled 3”等标题的新文档窗口。(我提到这一点不仅是因为它很烦人,而且因为它可能会产生一些对出了什么问题的洞察力。)
通过使我的应用程序控制器成为欢迎面板的代表,我已经部分解决了 #1。单击“打开现有文档”按钮时,面板将退出其键状态(因为正在打开文件浏览器对话框),因此我可以在委托的windowDidResignKey:
方法中关闭面板。但是,我不知道在创建新文档时如何关闭面板,因为在创建新文档时找不到发布的通知或调用的委托方法。最终,#2 仍然是一个问题,因为文档窗口在创建时没有获得焦点。
我只有子类NSDocument
——我根本没有使用自定义文档或窗口控制器。我也尝试将面板更改为 an NSWindow
,认为 an 的NSWindow
行为可能有所不同,但同样的问题正在发生。
objective-c - Cocoa 基于文档的应用程序:对于仅查看器的文件类型,将“保存”更改为“另存为”
我有一个基于 Cocoa 文档的应用程序,它(目前至少)用作基本的文本编辑器。它保存 .txt、.rtf 和 .rtfd,并加载它们以及 .doc 和 .docx。如果我打开一个 .doc 或 .docx 文件并对其进行编辑,然后尝试关闭它,它会提醒我保存,但保存选项不会做任何事情,因为该应用程序只是这些类型文件的查看器。对于只能查看的类型(如 .doc 和 .docx),如何将该功能设置为“另存为”?