相关疑难解决方法(0)

如何在 SwiftUI、macOS 中打开另一个窗口?

我想在 macOS 上的 SwiftUI 应用程序中显示具有不同内容的第二个窗口。我找不到任何关于此的文档。下面的尝试不起作用。有谁知道怎么做?

class AppState: ObservableObject {
    @Published var showSecondWindow: Bool = false
}

@main
struct MultipleWindowsApp: App {
    @StateObject var appState = AppState()
    var body: some Scene {
        WindowGroup {
            ContentView().environmentObject(appState)
        }
        WindowGroup {
            if appState.showSecondWindow {
                SecondContent()
            }
        }
    }
}

struct ContentView: View {
    @EnvironmentObject var appState: AppState
    var body: some View {
        VStack {
            Text("Hello, world!")
            Button("Open 2nd Window") {
                appState.showSecondWindow = true
            }
        }.padding()
    }
}

struct SecondContent: View {
    var body: some …
Run Code Online (Sandbox Code Playgroud)

macos swiftui

6
推荐指数
3
解决办法
1381
查看次数

macOS SwiftUI:在文档应用程序中实例化新的非文档窗口

有没有一种纯 SwiftUI 的方式来打开一个新窗口?我有一个基于文档的应用程序,它的应用程序看起来像这样:

@main struct MyApp: App
{
    var
    body: some Scene {
        DocumentGroup(newDocument: ProjectDocument.init) { inGroup in
            ProjectWindowContentView(document: inGroup.document)
                .frame(minWidth: 301.0, minHeight: 100.0)
                .onReceive(self.addTerrainGeneratorLayerCommand) { _ in
                    inGroup.document.addTerrainGeneratorLayer()
                }
        }
        .commands {
            ...
        }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个菜单命令来在它自己的窗口中实例化一个小的自包含实用工具。到目前为止,我在网上看到的任何讨论实际上都涉及创建一个新NSWindowNSHostingView内容视图。这似乎不是很像 SwiftUI,而且考虑到他们最近添加的DocumentGroup并且WindowGroup似乎是一个很大的疏忽。

我尝试将 aWindowGroup放入应用程序的场景中,但如果我注释掉DocumentGroup.

swiftui macos-big-sur

3
推荐指数
1
解决办法
91
查看次数

标签 统计

swiftui ×2

macos ×1

macos-big-sur ×1