【问题标题】:How to edit many documents in one window with the nsdocument architecture如何使用 nsdocument 架构在一个窗口中编辑多个文档
【发布时间】:2012-02-06 02:52:17
【问题描述】:

我正在编写一个基于文档的应用程序,其中有一个用户打开的项目文件和许多相关的源文件,我希望在同一个窗口中编辑所有这些文件。我怎样才能在NSDocument 架构中做到这一点?具体来说,如何创建多个NSDocuments 作为与项目文件关联的NSDocument 的子级,然后在一个窗口控制器中显示这些。

之前有人问过这个问题(例如Multiple Documents in a Single Window in Cocoa),但答案建议在文档架构之外工作,最近的 App Store 规则更改要求所有应用程序都使用沙盒,这要求所有 IO通过 NSDocument。

【问题讨论】:

  • 我不明白为什么你不能在文档架构之外工作; NSDocument 沙盒和其他 I/O 怎么不是?您将不得不在文档架构之外工作,因为它不支持您想要的东西(即它支持一个带有一个或多个窗口的文档)。
  • 在即将实施的沙盒系统下,当您的应用程序中打开一个文档时,内核会将其添加到您的应用程序可以访问的文件或目录的白名单中。无论 UNIX 文件权限如何,都无法访问不在此白名单中的任何文件或目录。 NSDocument 不需要向白名单添加内容,但这是(据我所知)将此条目保留在白名单中的唯一方法,直到下次启动应用程序时(应用程序预计会重新打开)文件)。我不确定是否有其他方法可以做到这一点,似乎应该有。

标签: macos cocoa nsdocument


【解决方案1】:

关于您链接的问题,我刚刚添加了一个新答案:Multiple Documents in a Single Window in Cocoa

我的想法是一个系统,每个窗口只有一个文档,但该窗口是其他窗口的无边框子窗口,它将随意定位/调整大小/隐藏实际文档窗口,并将子窗口的视图链接到响应者链。

我还没有这样做,但打算这样做。我认为它比我见过的任何其他技术都更有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多