簡體   English   中英

類型“SwiftUIWebView”不符合協議“NSViewRepresentable”

[英]Type 'SwiftUIWebView' does not conform to protocol'NSViewRepresentable

我正在關注本教程,了解如何在 SwiftUI 中創建 WebView,除了我正在為 macOS 應用程序而不是 IOS 制作它。

我將 UIViewRepresentable 切換為 NSViewRepresentable 並收到此錯誤: Type 'SwiftUIWebView' does not conform to protocol'NSViewRepresentable'

import SwiftUI
import WebKit
import AppKit


struct SwiftUIWebView: NSViewRepresentable {
    let url: URL?
    
    func makeUIView(context: Context) -> WKWebView {
        let prefs = WKWebpagePreferences()
        prefs.allowsContentJavaScript = true
        let config = WKWebViewConfiguration()
        config.defaultWebpagePreferences = prefs
        let webView = WKWebView(frame: .zero, configuration: config)
        
    }
    
    
    func updateUIView(_ uiView: WKWebView, context: Context) {
        guard let myURL = url else {
            return
        }
        let request = URLRequest(url: myURL)
        uiView.load(request)
        
    }
}

您還需要使用makeNSView協議委托而不是makeUIView

struct SwiftUIWebView: NSViewRepresentable {
    let url: URL?
    
    func makeNSView(context: Context) -> WKWebView {
        let prefs = WKWebpagePreferences()
        prefs.allowsContentJavaScript = true
        let config = WKWebViewConfiguration()
        config.defaultWebpagePreferences = prefs
        let webView = WKWebView(frame: .zero, configuration: config)
        return webView
    }
    func updateNSView(_ nsView: WKWebView, context: Context) {
        guard let myURL = url else {
            return
        }
        let request = URLRequest(url: myURL)
        nsView.load(request)
    }
}

請查看文檔

方法是makeNSViewupdateNSView

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM