gpt4 book ai didi

ios - 如何阻止 SwiftUI 重新加载我通过 UIViewRepresentable 使用的 WKWebView 页面?

转载 作者:行者123 更新时间:2023-12-03 08:26:04 25 4
gpt4 key购买 nike

我的代码设置了从网页获取的导航栏标题,但是每次这都会导致整个 WKWebView 重新加载...该页面相当重,因此消耗了大量时间。使用按钮设置标题时的行为相同。


struct TransitScreen: View, HandlerDelegate {

var urlRequest: URLRequest
@State var pageTitle = "Title 1"

var body: some View {

VStack {

KSWebView(urlRequest: urlRequest, delegate: self) // WKWebView using UIViewRepresentable

NavigationLink("Go", destination: Text("Some Data"))

Button(action: {
pageTitle = "replaced \(Date().toSeconds())"
}){
Text("Change title")
}

}.navigationBarTitle(Text(pageTitle))
.edgesIgnoringSafeArea(.top)
}


func process(data: String){
pageTitle = data
}

}

有什么办法可以阻止这种情况发生吗?或者其他方法来更新navigationBarTitle?

最佳答案

找到问题根源

// KSWebView.swift

func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(urlRequest)
}

将其更改为


func makeUIView(context: Context) -> WKWebView {
// TODO: Check this hacky code and find some replacement
let headerHeight = CGFloat(100)
let webViewHeight = UIScreen.main.bounds.height - headerHeight
let webViewFrame = CGRect(x: 0, y: headerHeight, width: UIScreen.main.bounds.width, height: webViewHeight)

let webView = WKWebView(frame: webViewFrame, configuration: config())
webView.load(urlRequest)
self.webView = webView
return webView
}

func updateUIView(_ uiView: WKWebView, context: Context) {

}

这会阻止 View 每次更新时加载请求。

关于ios - 如何阻止 SwiftUI 重新加载我通过 UIViewRepresentable 使用的 WKWebView 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66597718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com