Why does my WKWebView not show up in a swiftUI view?

Viewed 666

I got the following swiftUI code:

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)
    }
}

The problem is that it just shows an empty view. How do I fix that?

1 Answers

You can use below code and it uses 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)
        }
    }
}

If it still not loads then please go to capabilities and check incoming and out going connections.

enter image description here

Related