SwiftUI:如何访问内容视图中的变量 [英] SwiftUI: how to access variable inside Content View
本文介绍了SwiftUI:如何访问内容视图中的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我为 macOS 构建的网络浏览器,我正在尝试访问内容视图中的字符串变量.但我收到此错误
This is a web browser i'm building for macOS and I'm trying to access a string variable inside my content view. But i'm getting this error
Cannot use instance member 'site' within property initializer; property initializers run before 'self' is available
在正文中定义 webView 有效,但按钮中的刷新页面功能停止工作.
defining webView inside the body works but my refresh page function in the button stops working.
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)
}
}
推荐答案
使用计算属性.
var webView: WebView {
return WebView(request: URLRequest(url: URL(string:"https://" + self.site)!))
}
这篇关于SwiftUI:如何访问内容视图中的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文