MacOS app 在一个窗口打开另一个窗口的方法[SwiftUI]

需求场景

在macos 中常常需要在一个窗口中打开另一窗口,比如设置页面,关于页面。在 appkit 中 可以使用 NSWorkspace.share.open() 方法打开,在 SwiftUI 中 有更简单的方法。

效果

iShot_2024-04-03_15.02.47.gif

实现

在app 入口文件中,添加多个窗口视图,除主窗口外,每个窗口要添加一个id 选项用于打开识别。

WindowGroup(id: "MySetting") {
    MySetting()
}
WindowGroup(id:"MyAbout") {
    AboutView()
}

在调用的页面注入环境 的openWindow 方法,在回调中执行该方法


struct ContentView: View {
    @Environment(\.openWindow) private var openWindow
    var body: some View {
        VStack {
            Button {
                openWindow(id: "MySetting")
                openWindow(id: "MyAbout")
            } label: {
              Text("open two window")
            }
        }
    }
}

后记

在网上搜索SwiftUI 怎么打开另一个窗口,搜到的是使用 NSWorkspace.share.open 方法,使用这个方法,url 一直有问题,再看看 WindowGroup 的文档,文档中有打开多窗口的方法,现在macos 开发 太少了, 网上搜索到的答案都是老旧的 Appkit 中的方法,下次有问题,首先要看文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容