luckrill
luckrill

Reputation: 241

SwiftUI WebKit WKWebView: how to support multi url

I dev a web, now want to dev iOS app.

my idea is: by menu change new url

struct ContentView: View {
    var body: some View {
        Webview(url: "https://readmorejoy.com")
        HStack {
            Menu("Menu") {
                Button("menu1", action: {
//                    Webview(url: "https://readmorejoy.com")
                })
                Button("menu2", action: {})
                Button("menu3", action: {})
            }
        }
    }
}

Upvotes: 1

Views: 627

Answers (2)

luckrill
luckrill

Reputation: 241

all right, all right this is my update code

struct Webview: UIViewRepresentable {
    var url: String
    func makeUIView(context: Context) -> WKWebView {
        guard let url = URL(string: self.url) else {
            return WKWebView()
        }
        
        let request = URLRequest(url: url)
        let wkWebview = WKWebView()
        wkWebview.load(request)
        
        return wkWebview
    }
    
    func updateUIView(_ uiView: Webview.UIViewType, context: UIViewRepresentableContext<Webview>) {
        if let url = URL(string: self.url) {
            let request = URLRequest(url: url)
            uiView.load(request)
        }
    }
}

Upvotes: 1

Asperi
Asperi

Reputation: 257533

Here it is

struct ContentView: View {
    @State private var urlString = "https://readmorejoy.com"   // << initial !!

    var body: some View {
        Webview(url: urlString)     // << use !!
        HStack {
            Menu("Menu") {
                Button("menu1", action: {
                    self.urlString = "https://readmorejoy.com"   // << update !!
                })
                Button("menu2", action: {})
                Button("menu3", action: {})
            }
        }
    }
}

Upvotes: 0

Related Questions