Тип ‘SwiftUIWebView’ не соответствует протоколу ‘ Не представлен

#swiftui

Вопрос:

Я следую этому учебнику о том, как создать веб-представление в SwiftUI, за исключением того, что я делаю его для приложения 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)
        
    }
}
 

Ответ №1:

Вам также необходимо использовать 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)
    }
}
 

Ответ №2:

Пожалуйста, ознакомьтесь с документацией

Методы таковы makeNSView и updateNSView .