#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
.