一个 SwiftUI 组件 View
,包含一个 WKWebView
。
由于 WKWebView
处理了自身的大量状态、导航堆栈等,几乎可以更容易地将其视为一个可变的数据模型。 您可以在需要它之前进行设置,然后简单地在您的 SwiftUI View 中使用其数据。
只需启动一个 WebViewStore
(可以选择使用您自己的 WKWebView
),然后像访问数据模型一样访问 WKWebView
本身。
使用示例
import SwiftUI
import WebView
struct ContentView: View {
@StateObject var webViewStore = WebViewStore()
var body: some View {
NavigationView {
WebView(webView: webViewStore.webView)
.navigationBarTitle(Text(verbatim: webViewStore.title ?? ""), displayMode: .inline)
.navigationBarItems(trailing: HStack {
Button(action: goBack) {
Image(systemName: "chevron.left")
.imageScale(.large)
.aspectRatio(contentMode: .fit)
.frame(width: 32, height: 32)
}.disabled(!webViewStore.canGoBack)
Button(action: goForward) {
Image(systemName: "chevron.right")
.imageScale(.large)
.aspectRatio(contentMode: .fit)
.frame(width: 32, height: 32)
}.disabled(!webViewStore.canGoForward)
})
}.onAppear {
self.webViewStore.webView.load(URLRequest(url: URL(string: "https://apple.com")!))
}
}
func goBack() {
webViewStore.webView.goBack()
}
func goForward() {
webViewStore.webView.goForward()
}
}