为什么我的 WKWebView 没有显示在 swiftUI 视图中?

swi*_*ynx 2 macos swift swiftui

我得到以下 swiftUI 代码:

import SwiftUI
import WebKit

struct WebView: NSViewRepresentable {
    func makeNSView(context: Context) -> WKWebView {
        let view: WKWebView = WKWebView()
        guard let url: URL = URL(string: "https://google.com") else { return view }
        let request: URLRequest = URLRequest(url: url)

        view.load(request)

        return view
    }

    func updateNSView(_ view: WKWebView, context: Context) {

    }
}

struct ContentView: View {
    var body: some View {
        WebView()
            .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它只显示一个空视图。我该如何解决?

Muh*_*ati 5

您可以使用下面的代码,它使用 NSViewRepresentable

struct WebView: NSViewRepresentable {

    let view: WKWebView = WKWebView()

    var request: URLRequest {
        get{
            let url: URL = URL(string: "https://google.com")!
            let request: URLRequest = URLRequest(url: url)
            return request
        }
    }

    func makeNSView(context: Context) -> WKWebView {
        view.load(request)
        return view
    }

    func updateNSView(_ view: WKWebView, context: Context) {
        view.load(request)
    }

}

struct ContentView: View {

    var body: some View {
        GeometryReader { g in
            ScrollView {
                WebView()
                .frame(height: g.size.height)
            }.frame(height: g.size.height)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它仍然没有加载,那么请转到功能并检查传入和传出的连接。

在此处输入图片说明

  • 启用传入和传出连接就可以了,谢谢。 (2认同)