在创建WKWebView时,我通过@Binding webPageURL传递网页webPageURL。
我还通过webPageURL更新了显示的网站。
这里的问题是,当我调用NavigationLink并从NavigationLink导航回来时,调用updateUIView方法,WKWebView重新加载网页。
如何防止WKWebView在从NavigationLink返回时调用方法NavigationLink
struct MainView:View {
@State private var isActive = false
@Binding var stateWebPageURL:String
var body: some View {
return VStack {
MyWKWebView(webPageURL:$stateWebPageURL)
NavigationLink(destination: SecoundDestination(),isActive: $isActive) {
Text("Do Something")
}
}
}
}struct MyWKWebView: UIViewRepresentable {
@Binding var webPageURL:String
func updateUIView(_ uiView: WKWebView, context: Context) {
let pageURL = URL(string:webPageURL)
let urlRequest = URLRequest(url: pageURL!)
uiView.load(urlRequest)
}
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView(frame: .zero,configuration: webConfiguration)
let pageURL = URL(string:webPageURL)
let urlRequest = URLRequest(url: pageURL!)
webView.load(urlRequest)
return webView
}
func makeCoordinator() -> ContentController {
ContentController()
}
}发布于 2020-05-25 11:08:10
如果代码是不可测试的,那么只需读取代码,就可以显式地使MyWKWebView等效,如下所示
var body: some View {
return VStack {
MyWKWebView(webPageURL:$stateWebPageURL).equatable() // << here !!和
struct MyWKWebView: UIViewRepresentable, Equatable {
static func == (lhs: MyWKWebView, rhs: MyWKWebView) -> Bool {
lhs.webPageURL == rhs.webPageURL
}
// ... other your code SwiftUI不应该更新相同的视图,所以应该工作。
https://stackoverflow.com/questions/61998142
复制相似问题