如何通过 UIViewRepresentable 访问 goBack 和 goForward
How to access goBack and goForward via UIViewRepresentable
我已经通过 UIVewRepresentable 在 SwiftUI 中添加了一个 WKwebview。我很难获得一些按钮来使网络视图后退和前进。下面是我制作的两个 类,但我什至无法打印(可能是错误?)。
import SwiftUI
import WebKit
struct Webview : UIViewRepresentable {
let request: URLRequest
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
func goBack(){
// go back
print("go back")
}
func goForward (){
// go forward
print("go forward")
}
}
import SwiftUI
struct FullWebView : View {
let webview = Webview(request: URLRequest(url: URL(string: "https://www.apple.com")!))
var body: some View {
VStack{
HStack{
Button(action: {
//do something
self.webview.goBack()
}){
Text("back")
}
Spacer()
Button(action: {
//do something
self.webview.goForward()
}){
Text("forward")
}
}
webview
}
}
}
dfd 感谢您指出正确的路径,您的回答需要稍作修改,因为将 webview 作为 var 添加到结构中意味着我需要在使用它时为其设置一个值,所以我也有添加自定义初始化方法。无论如何,这是有效的代码。
网页视图结构
import SwiftUI
import WebKit
struct Webview : UIViewRepresentable {
let request: URLRequest
var webview: WKWebView?
init(web: WKWebView?, req: URLRequest) {
self.webview = WKWebView()
self.request = req
}
func makeUIView(context: Context) -> WKWebView {
return webview!
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
func goBack(){
webview?.goBack()
}
func goForward(){
webview?.goForward()
}
}
这里是使用 webview 并将按钮添加到顶部的结构
import SwiftUI
struct FullWebView : View {
let webview = Webview(web: nil, req: URLRequest(url: URL(string: "https://www.apple.com")!))
var body: some View {
VStack{
HStack{
Button(action: {
//do something
self.webview.goBack()
}){
Text("back")
}
Spacer()
Button(action: {
//do something
self.webview.goForward()
}){
Text("forward")
}
}
webview
}
}
}
我已经通过 UIVewRepresentable 在 SwiftUI 中添加了一个 WKwebview。我很难获得一些按钮来使网络视图后退和前进。下面是我制作的两个 类,但我什至无法打印(可能是错误?)。
import SwiftUI
import WebKit
struct Webview : UIViewRepresentable {
let request: URLRequest
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
func goBack(){
// go back
print("go back")
}
func goForward (){
// go forward
print("go forward")
}
}
import SwiftUI
struct FullWebView : View {
let webview = Webview(request: URLRequest(url: URL(string: "https://www.apple.com")!))
var body: some View {
VStack{
HStack{
Button(action: {
//do something
self.webview.goBack()
}){
Text("back")
}
Spacer()
Button(action: {
//do something
self.webview.goForward()
}){
Text("forward")
}
}
webview
}
}
}
dfd 感谢您指出正确的路径,您的回答需要稍作修改,因为将 webview 作为 var 添加到结构中意味着我需要在使用它时为其设置一个值,所以我也有添加自定义初始化方法。无论如何,这是有效的代码。
网页视图结构
import SwiftUI
import WebKit
struct Webview : UIViewRepresentable {
let request: URLRequest
var webview: WKWebView?
init(web: WKWebView?, req: URLRequest) {
self.webview = WKWebView()
self.request = req
}
func makeUIView(context: Context) -> WKWebView {
return webview!
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
func goBack(){
webview?.goBack()
}
func goForward(){
webview?.goForward()
}
}
这里是使用 webview 并将按钮添加到顶部的结构
import SwiftUI
struct FullWebView : View {
let webview = Webview(web: nil, req: URLRequest(url: URL(string: "https://www.apple.com")!))
var body: some View {
VStack{
HStack{
Button(action: {
//do something
self.webview.goBack()
}){
Text("back")
}
Spacer()
Button(action: {
//do something
self.webview.goForward()
}){
Text("forward")
}
}
webview
}
}
}