首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在SwiftUI DocumentGroup macOS中创建并打开新文档

在SwiftUI中,DocumentGroup是一种容器视图,用于在macOS应用程序中创建和管理多个文档。它允许用户同时打开多个文档,并在应用程序的界面中进行切换和管理。

为了在SwiftUI中创建并打开新文档,您可以按照以下步骤进行操作:

  1. 导入必要的框架:
代码语言:txt
复制
import SwiftUI
import UniformTypeIdentifiers
  1. 创建一个符合FileDocument协议的自定义文档类型:
代码语言:txt
复制
struct MyDocument: FileDocument {
    static var readableContentTypes = [UTType.plainText]
    
    var text: String
    
    init(text: String = "") {
        self.text = text
    }
    
    init(configuration: ReadConfiguration) throws {
        guard let data = configuration.file.regularFileContents,
              let string = String(data: data, encoding: .utf8) else {
            throw CocoaError(.fileReadCorruptFile)
        }
        text = string
    }
    
    func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
        let data = text.data(using: .utf8) ?? Data()
        return FileWrapper(regularFileWithContents: data)
    }
}
  1. 创建一个用于显示和编辑文档内容的视图:
代码语言:txt
复制
struct ContentView: View {
    @Binding var document: MyDocument
    
    var body: some View {
        TextEditor(text: $document.text)
    }
}
  1. 创建一个DocumentGroup,并将其作为主视图的一部分:
代码语言:txt
复制
@main
struct MyApp: App {
    @StateObject private var myDocument = MyDocument()
    
    var body: some Scene {
        DocumentGroup(newDocument: MyDocument()) { file in
            ContentView(document: file.$document)
        }
    }
}

在上述代码中,DocumentGroup中的newDocument参数是一个用于创建新文档的闭包。您可以在此闭包中设置新文档的初始值。

通过执行上述步骤,您将能够在SwiftUI的macOS应用程序中创建并打开新文档。每个文档都将具有自己的ContentView视图,并且可以在应用程序的界面中进行切换和管理。

腾讯云提供了各种云计算和存储产品,可以用于开发和部署SwiftUI应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)获取更多关于腾讯云产品的详细信息和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ask Apple 2022 与 SwiftUI 有关的问答(上)

Ask Apple 为开发者与苹果工程师创造了 WWDC 之外进行直接交流的机会。本文对本次活动SwiftUI 有关的一些问答进行了整理,添加了一点个人见解。本文为上篇。...请查看 ShareLink[3]contextActionQ:早期的 iOS 16 和 macOS 13 测试版,我们看到一个的 .contextAction 修改器,后来被删除了。...DocumentGroupQ: macOS 上使用 SwiftUI 应用生命周期和 DocumentGroup 时,如果应用仅为数据阅读器,是否可以禁止创建新文件?...WindowGroup 和 OpenWindowActionQ: macOS 上是否可以创建新窗口时附加参数?我同一个子上下文中创建一个的托管对象,希望将这个对象发送到一个的窗口。...A: macOS Ventura ,我们 [WindowGroup 上引入了的 API](https://developer.apple.com/documentation/swiftui/windowgroup

12.2K20

肘子的 Swift 周报 #034 | WWDC 2024,AI 并非全部

本文中,Donny Wals 将详细介绍 @preconcurrency 的多种用途,@preconcurrency 不仅有助于将旧模块整合进代码,也使得代码能够旧项目中使用,从而为 Swift...SwiftUI Mac 应用的场景类型 ( Scenes Types in a SwiftUI Mac App )[11] Natalia Panferova[12] 使用 SwiftUI 构建 macOS...应用程序时,了解运用各种场景类型是创建多功能且高效应用的关键。...每个窗口 SwiftUI 中都对应一个场景(Scene),这些场景不仅包括常见的应用窗口(WindowGroup),还包含了 DocumentGroup、Settings、Window,以及位于系统菜单栏的...本文中,Natalia Panferova 深入分析了这些场景类型的用途和实现方式,帮助开发者充分利用 SwiftUI 的强大功能,构建出更丰富、更高效的 macOS 应用程序。

10310
  • Ask Apple 2022 与 SwiftUI 有关的问答(下)

    Ask Apple 为开发者与苹果工程师创造了 WWDC 之外进行直接交流的机会。本文对本次活动SwiftUI 有关的一些问答进行了整理,添加了一点个人见解。本文为下篇。...任何自定义布局的完整实现都比我在这里的帖子快速勾勒出来的要长,但总体思路是,你可以创建一个布局来查询其子级的理想大小相应地对它们进行排序。...阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始的滚动视图Q:我如何实现一个底部对齐的滚动视图, macOS 上会不会有糟糕的性能?...软弃用Q:最近,我注意到的 @ViewBuilder 函数以前的版本是不可用的,弃用信息提示我使用的方法取代老方法,这是 SwiftUI 的 API 设计缺陷还是我错过了什么?...macOS APIQ:对于运行 Monterey 的 Mac,能否如何在 SwiftUI 实现下面需求的建议:打开一个窗口该窗口中初始化数据找到所有打开的窗口确定一个窗口是否打开从不在该窗口的视图中关闭一个窗口

    14.8K30

    肘子的 Swift 周报 #009

    原创 SwiftUI geometryGroup() 指南:从原理到实践[2] fatbobman(东坡肘子)[3] WWDC 2023 ,苹果为 SwiftUI 添加了一个的修饰器:geometryGroup...本文将介绍 geometryGroup() 的概念、用法,以及低版本 SwiftUI 不使用 geometryGroup() 的情况下如何处理异常。...Basics[11] Majid Jabrayilov[12] iOS 17 ,苹果大幅强化了 MapKit SwiftUI 的能力,现在开发者也能够通过 MapKit 创建出专业、高效的地图应用了...Colucci 分析统计了最新的 macOS Sonoma 14 ,苹果使用的编程语言和 UI 框架的数据。...播客 107: 好,买了,破费[17] weak self[18] 在这期播客,13[19] 在前半部分介绍了创建 iOS 开发配饭吃[20] 系列视频的初衷分享了一些体会。

    13610

    打造可适配多平台的 SwiftUI 应用

    这种做法不仅可以解决跨平台兼容性问题,还有其他好处:可以改善视图中代码的整洁度(减少条件编译语句的使用)可以改善 SwiftUI 不同版本之间的兼容性当然,要创建使用这类代码,前提是开发者必须已经对...由于 iPhone 只支持单窗口模式,通常我们不会太注意它的存在,但在 iPadOS 以及 macOS 这些支持多窗口的系统,则代表着,每次创建一个新窗口( macOS ,通过菜单的新建来创建新窗口...“电影猎手”,我们 App 的位置创建了 Store(保存应用状态以及主要处理逻辑的单元)的实例,通过 .environmentObject(store) 注入到根视图中。...图片尽管系统创建场景(新窗口)时会为其创建一棵的视图树,但由于为场景的根视图注入的仍然是同一个 Store 实例,因此尽管场景不同,但在不同的窗口中获取的应用状态完全一致。...图片这是因为, macOS ,使用 Settings 来声明 Settings 窗口同样是创建了一个的场景,会创建一棵独立的视图树。

    3.1K80

    打造可适配多平台的 SwiftUI 应用

    这种做法不仅可以解决跨平台兼容性问题,还有其他好处: 可以改善视图中代码的整洁度(减少条件编译语句的使用) 可以改善 SwiftUI 不同版本之间的兼容性 当然,要创建使用这类代码,前提是开发者必须已经对...由于 iPhone 只支持单窗口模式,通常我们不会太注意它的存在,但在 iPadOS 以及 macOS 这些支持多窗口的系统,则代表着,每次创建一个新窗口( macOS ,通过菜单的新建来创建新窗口...“电影猎手”,我们 App 的位置创建了 Store(保存应用状态以及主要处理逻辑的单元)的实例,通过 .environmentObject(store) 注入到根视图中。...image-20230424092927467 尽管系统创建场景(新窗口)时会为其创建一棵的视图树,但由于为场景的根视图注入的仍然是同一个 Store 实例,因此尽管场景不同,但在不同的窗口中获取的应用状态完全一致...iShot_2023-04-24_10.33.03.2023-04-24 10_34_15 这是因为, macOS ,使用 Settings 来声明 Settings 窗口同样是创建了一个的场景,

    2K10

    WWDC20全球开发者大会上开发者必须了解这些事

    该计划提供访问文档、论坛支持、macOS Big Sur 和 Xcode 12的测试版,包括有限使用开发工具包(DTK),这将使开发者能够构建和测试他们的 Universal 2 应用程序。...而通过SwiftUI API,开发者可以使用同样的代码为 iOS、iPadOS 和 macOS 构建一个 widget。...文档选项卡使打开多个文件既快速又轻便,以支持界面文件,并且日志和项目文件均在各自的选项卡打开。导航器字体现在与系统大小匹配,或者可以设置为小,或大。...今年,的生命周期 API 使开发者可以 SwiftUI 编写整个应用程序,并在所有 Apple 平台上共享该代码。...借助 macOS Big Sur,Mac Catalyst 应用程序会自动继承宽敞的新设计,同时为开发者提供功能强大的 API,更好地控制其应用程序的行为。

    1.3K20

    Xcode 11 初体验(Xcode工作流的改进(Workflows))

    趁着最新更新正是版本的 Xcode 11 于是就有这一篇 Xcode工作流的改进(Workflows) 工程创建 [1240] 创建工程进来,就会发现 User Interface 可以进行选择 SwiftUI...(本人是非常喜欢代码块的,对于这个调整我要点赞) [1240] 将 Version Editor 的 log 选项卡移到了检查器,组成了的Source Control History区。...其中说明一下:SwiftUI 预览 系统最低要求macOS 10.15 [1240] Add Editor 提供了编辑窗口的任意切割功能: 可以指定文件打开的位置。...指定文件打开位置 上面我们介绍了窗口分割, Xcode 11 ,你还可以按住 Option + Shift,然后左边点击要打开的文件,这时会出现窗口选择提示 [1240] 你可以用键盘,或者鼠标任意方式选择你要打开这个文件的窗口...,选中后点击鼠标左键或者键盘的 Enter键,就可以指定窗口打开这个文件了。

    2.5K40

    百行代码变十行,苹果SwiftUI可视化编程让开发者惊呼完美

    官方教程:https://developer.apple.com/tutorials/swiftui/ 官方文档:https://developer.apple.com/documentation/swiftui...简化动画构建 创建流畅的动画效果十分简单,如同声明一个简单的方法。SwiftUI 可以需要的时候自动计算渲染。 ?...因此整个开发,预览可视化与代码可编辑性能同时支持交互。 ? 如上所示为 SwiftUI 的代码与预览部分,它们之间是可以实时交互的。...Xcode 会通过「动态替换」实时 APP 交换编辑的代码,这是 Swift 特征。...预览:现在,我们可以创建任何 SwiftUI 视图的一个或多个预览,从而得到样本数据,配置几乎用户能看到的所有内容,例如大字体、定位或「暗黑模式」等。

    4.1K10

    Xcode 11 初体验

    (本人是非常喜欢代码块的,对于这个调整我要点赞 将Version Editor 的 log 选项卡移到了检查器,组成了的Source Control History区。...其中说明一下:SwiftUI 预览 系统最低要求macOS 10.15 Add Editor 提供了编辑窗口的任意切割功能 可以指定文件打开的位置。...指定文件打开位置 上面我们介绍了窗口分割, Xcode 11 ,你还可以按住 Option + Shift,然后左边点击要打开的文件,这时会出现窗口选择提示 你可以用键盘,或者鼠标任意方式选择你要打开这个文件的窗口...选择某个 commit,然后 cherry-pick,弹出框点击 cherry-pick就会将该commit 合并到 master分支,生成一个 commit。...关于Swift UI 的更新 其中我有两篇博客也介绍到了 SwiftUI : SwiftUI - 百行代码变十行,Swift再创辉煌 WWDC - SwiftUI - 初恋般的感觉 参考:Apple 官方文档一线搬砖工人

    3.2K10

    WWDC - SwiftUI - 初恋般的感觉

    你可以通过Xcode的实时反馈功能,来优化你的视图布局 。 第一节 创建一个使用SwiftUIXcode项目。浏览画布、预览和SwiftUI模板代码。...要在Xcode预览画布上的视图并与之交互,请确保您的Mac运行的是macOS 10.15 beta版。 macOS 10.15 beta版下载地址 Xcode 11下载地址 ?...第七步 location后面添加一个的文本框,修改文本框文案设置字体 import SwiftUI struct ContentView: View { var body: some View...你可以MapKit的MKMapView类来展示渲染地图界面。 SwiftUI要使用UIView或者其子类,你需要让你的view遵循UIViewRepresentable协议。...SwiftUIWatchKit和AppKit同样声明了类似的协议 ? 第一步 创建SwiftUI View来展示MKMapView。

    3.8K10

    SwiftUI 视图中打开 URL 的若干方法

    访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验 本文将介绍 SwiftUI 视图中打开 URL 的若干种方式,其他的内容还包括如何自动识别文本的内容并为其转换为可点击链接...本文的范例代码是 Swift Playgrounds 4.1 ( macOS 版本 )完成的,可在 此处下载[2]。...)打开指定的 URL 将文本的部分内容变成可点击区域,点击后打开指定的 URL 遗憾的是,1.0 时代的 SwiftUI 还相当稚嫩,没有提供任何原生的方法来应对上述两种场景。...此时 Button ,我们可以直接通过 openURL 来完成 SwiftUI 1.0 版本通过调用其他框架 API 才能完成的工作。...通过 AttributedString 为不同位置的文字设置不同的属性,从而实现在 Text 打开 URL 的功能。

    7.7K31

    苹果推出突破性新技术,使开发人员更加轻松快捷地创建应用

    苹果公司推出了几项创新技术,使开发人员能够更加轻松、快捷地创建功能强大的应用。...Xcode 11为SwiftUI带来生机 Xcode 11内置的图形UI设计工具使UI设计人员可以轻松地使用SwiftUI快速组装用户界面,而无需编写任何代码。...图形设计和编写代码之间流畅移动的能力使UI开发更加有趣且高效,使软件开发人员和UI设计人员能够更紧密地协作。...Reality Composer是一款针对iOS、iPadOS和Mac的功能强大的应用程序,它让开发人员可以没有3D体验的情况下轻松地创建原型生成AR体验。...除了针对SwiftUI的语言增强功能外,Swift 5.1还增加了模块稳定性,这是Swift构建二进制兼容框架的关键基础。

    2.1K20

    ViewBuilder 研究(下) —— 从模仿中学习

    (结构值,非 body 值)将被保存在 SwiftUI 的托管数据池中 根据视图的依赖信息 AttributeGraph 数据池中创建与当前显示的视图树对应的依赖图,监控依赖的变化 依据 SwiftUI...,使用的视图值替换原有视图值 重组依赖图绘制新增及发生变化的视图 周而复始、循环往复 仿制 ViewBuilder ViewBuilder(视图构建器)将帮助开发者以一种简洁、清晰、易读的方式声明视图...只创建了至多支持 10 个 component 的 buildBlock 重载,因此我们视图闭包的同一个层次最多只能声明 10 个视图。...我们可以通过如下的方式 SwiftUI 验证上述代码: SwiftUI 环境添加如下代码 public extension ViewBuilder { static func buildOptional...的 ViewBuilder 将使用我们提供的 buildOptional 来处理不包含 else 的 if 语句 SwiftUI 环境创建如下视图 struct ContentView: View

    3K20

    为什么SwiftUI的视图使用结构体?

    如果您曾经为UIKit或AppKit(Apple的iOS和macOS原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。...UIKit,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...UIKit,UIStackView是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也​​从未真正使用过。...SwiftUI,我们所有的视图都是简单的结构体,几乎可以自由创建。想想看:如果您制作一个仅包含一个整数的结构体,则结构体的整个大小就是:一个整数。没有其他的。...得益于现代iPhone的强大功能,我不会慎重考虑后创建1000个整数甚至100,000个整数——眨眼之间就会发生。1000个SwiftUI视图甚至100,000个SwiftUI视图也是如此。

    3.2K10

    SwiftUI 4.0 的全新导航系统

    SwiftUI 4.0( iOS 16+ 、macOS 13+ )对导航系统作出了重大改变,提供了以视图堆栈为管理对象的 API ,让开发者可以轻松实现编程式导航。本文将对的导航系统作以介绍。...最大的区别是,SwiftUI 4.0 为我们提供了 NavigationSplitView 通过 List 快速绑定数据的能力。...4.0 List 绑定了数据后,通过 List 构造方法创建的循环或 ForEach 创建的循环中的内容( 不能自带点击属性,例如 Button 或 onTapGesture ),将被隐式添加...macOS 上,detalOnly 不会起作用 如果想在 SwiftUI 4.0 之前的版本上使用类似的功能,可以参考我 用 NavigationViewKit 增强 SwiftUI 的导航视图[4]...iPad landscape 显示状态下,默认即为此种模式 automatic 默认值,根据上下文自动调整外观样式 NavigationTitle 添加菜单 使用的 navigationTitle

    10.3K62

    从用SwiftUI搭建项目说起

    ,针对一个需求或者是一个的项目我们基本上都是从写UI开始的,根据设计图再编造一些假数据来做,只是写的过程它的及时效果也都是脑补!...从 SwiftUI 谈声明式 UI 与类型系统 跨平台: 最新的swiftUI 5.1,我们创建一个MultilPlatform App有了下面这些区别: ·Before func...UIkit那样去创建Controller来管理View,SwiftUI中最常见的就是View。...UIKit我们的导航、标签都是通过控制器来管理,但是SwiftUI他们分别是通过NavigationView+TabView管理的,我们得认识上有一个基本的转变,从Controller到View...当 @State 装饰过的属性发生了变化,SwiftUI 会根据的属性值重新创建视图 */ @State private var selectedTab = 0 var

    4.5K20
    领券