首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在基于文档的macOS应用程序中处理不同的文档类型?

如何在基于文档的macOS应用程序中处理不同的文档类型?
EN

Stack Overflow用户
提问于 2022-04-23 07:35:05
回答 1查看 371关注 0票数 4

如何在一个macOS文档应用程序中处理两种不同的自定义文档类型?

从macOS文档应用程序模板开始,我定义了两种类型,它们也在info.plist中注册:

代码语言:javascript
复制
extension UTType {
    static var test1: UTType {
        UTType(exportedAs: "com.exapmple.test1")
    }
}

extension UTType {
    static var test2: UTType {
        UTType(exportedAs: "com.example.test2")
    }
}

苹果文档说:

通过添加其他文档组场景,应用程序可以支持多种文档类型:

但是,显示的示例只有一种类型可以创建,另一种类型是只读的(编辑器模式)。

如果我在主应用程序结构中这样做(这基本上是模板中的样板):

代码语言:javascript
复制
@main
struct MultipleDocumentsApp: App {
    var body: some Scene {
        DocumentGroup(newDocument: DocumentOne()) { file in
            Content1View(document: file.$document)
        }
        DocumentGroup(newDocument: DocumentTwo()) { file in
            Content2View(document: file.$document)
        }
    }
}

..the生成的新菜单如下所示,我只能创建类型1的文档:

显然我需要两个不同的新..。这两种文档类型的菜单项。我有什么办法做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-23 10:30:56

它仍然是基于NSDocumentController的,所以利与弊也是一样的-我们有自动处理默认的文档类型,其他一切-回到编码。

所以,您所做的一切都是正确的,唯一剩下的就是以编程的方式添加其他(非默认)类型的新文档。

以下是方法的主要部分:

代码语言:javascript
复制
Button("New Document2") {
  let dc = NSDocumentController.shared
  if let newDocument = try? dc.makeUntitledDocument(ofType: "com.example2.plain-text") {
    dc.addDocument(newDocument)
    newDocument.makeWindowControllers()
    newDocument.showWindows()
  }
}

完全发现和代码在这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71977747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档