swiftUI多窗口

找了好久终于找到一个优雅的方式打开多个窗口。

窗口声明,窗体id,传递的参数类型,后面闭包使用传递的参数生成窗体。

1
2
3
4
5
// A window group that displays messages.
// 接收 Message 类型的窗口参数
WindowGroup(id: "test", for: Message.self) { $messageID in
MessageDetail(messageID: messageID)
}

打开窗口并传递参数,使用 Environment 获取 openWindow,使用 id 和具体的消息对象即可。

1
2
3
4
5
6
7
8
var message: Message
@Environment(\.openWindow) private var openWindow

var body: some View {
Button("Open message") {
openWindow(id: "test", value: message.id)
}
}

swiftUI多窗口
https://wttch96.github.io/post/swift/swiftUI多窗口.html
作者
Wttch
发布于
2023年9月5日
许可协议