SwiftUI TabView 具有跨多个选项卡的共享内容视图

SwiftUI TabView with shared content view across multiple tabs

我正在构建一个基于 WKWebView 但使用了一些本机元素的应用程序。我正在寻找向其添加选项卡并且我达到了 TabView,但我面临的问题是对于每个选项卡,我需要有一个 WKWebView:

的新实例
TabView(selection: $tab) {
    ForEach(tabs, id: \.0) { (tag, name, icon) in
        MyWebView()
            .tabItem {
                Image(systemName: icon)
                Text(name)
            }
            .tag(tag)
    }
}
.onChange(of: tab) { tab in
    // postMessage to the WKWebView
}

这使得每个选项卡都有自己的 WKWebView 实例,每当我点击一个选项卡时,它都会向关联的网络视图发送一条消息。

但是我更喜欢有一个 WKWebView 并以某种方式连接 TabView 这样它会为每个选项卡显示相同的 WKWebView 这样我就可以发送向唯一 WKWebView 发送一条消息,指示它切换到适合当前选项卡的 Web 视图。

这可能吗?我是否可以在不使用 TabView 的情况下创建一行这样的选项卡,以便我可以将唯一的 WKWebView 堆叠在这一行的顶部?

可表示的 WKWebView 的单个静态实例是可能的,其他一切都取决于应用程序逻辑

struct MyWebView: UIViewRepresentable {
    static let nativeWebView = WKWebView()     // << here !!

    func makeUIView(context: Context) -> some UIView {
        Self.nativeWebView                     // << here !!
    }

    func updateUIView(_ uiView: UIViewType, context: Context) {
    }
}