我是SwiftUI的初学者,我尝试确保当我的WKWebview无法加载时,将用户写入错误页面。
我一直在做一些研究,试图弄清楚该怎么做,我发现我需要使用 使用方法WebView:didFailProvisionalNavigation:withError的WKNavigationDelegate: 如果您知道如何设置它,将对我有很大帮助,我找不到任何使用示例 谢谢大家
//我的WebView类
struct Webview : UIViewRepresentable,WKNavigationDelegate {
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
}
let request: URLRequest
var webview: WKWebView?
init(web: WKWebView?, req: URLRequest) {
self.webview = WKWebView()
self.request = req
}
func makeUIView(context: Context) -> WKWebView {
return webview!
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
// page precedente
func goBack(){
webview?.goBack()
}
// retour en avant
func goForward(){
webview?.goForward()
}
// recharg
func goReload() {
webview?.reload()
}
我的观点
struct ContentView: View {
let webview = Webview(web: nil, req: URLRequest(url: URL(string: "https://fr.yahoo.com")!))
var body: some View {
NavigationView {
VStack{
webview
HStack {
Button(action: {
self.webview.goBack()
}, label: {
Image(systemName: "backward.end")
.font(.system(size: 30))
.foregroundColor(.blue)
})
Spacer().frame(width: 50)
Button(action: {
self.webview.goForward()
}, label: {
Image(systemName: "forward.end")
.font(.system(size: 30))
.foregroundColor(.blue)
})
Spacer(minLength:2)
Button(action: {
// self.webview.goReload()
}, label: {
Image(systemName: "goforward")
.font(.system(size: 30))
.foregroundColor(.blue)
})
}
.padding()
}.navigationBarHidden(true)
}
}
}