【发布时间】:2021-08-03 10:28:01
【问题描述】:
这是我正在为 macOS 构建的 Web 浏览器,我正在尝试访问我的内容视图中的字符串变量。但是我收到了这个错误
Cannot use instance member 'site' within property initializer; property initializers run before 'self' is available
在正文中定义 webView 有效,但按钮中的刷新页面功能停止工作。
struct ContentView: View {
@State private var site: String = "www.google.com/"
let webView = WebView(request: URLRequest(url: URL(string:"https://" + site)!))
var body: some View {
TextField("Enter a URL", text: $site) //This is the address bar
NavigationView{
// let webView = WebView(request: URLRequest(url: URL(string: "https://" + site )!))
webView
.frame(width: 860, height: 860, alignment: .center)
Button(action: {
self.webView.refresh()
}) {
Text("Refresh Page")
}
}
}
}
网页视图
import SwiftUI
import WebKit
import AppKit
struct WebView: NSViewRepresentable {
let request: URLRequest
private var webView: WKWebView?
init (request: URLRequest) {
self.webView = WKWebView()
self.request = request
}
func makeNSView(context: Context) -> WKWebView {
return webView!
}
func refresh(){
webView?.reload()
}
func updateNSView(_ nsView: WKWebView, context: Context) {
nsView.load(request)
}
}
【问题讨论】: