[英]How to reload WKWebView?
我的服务器上有一个html
文档。 我在我的 webview 中从该文档加载文本。但是当我在我的服务器中更改html
文档中的文本时。 我的 webview 没有更新新文本。 只有当我用 webview 加载我的视图 controller 时,我才需要更新我的 webview。我为此使用此代码,但我的 webview 没有更新:
import UIKit
import WebKit
class WayViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: "\(waysURL)") {
let urlRequest = URLRequest(url: url)
webView.load(urlRequest)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
webView.reload()
}
}
问题是如果我关闭应用程序。 然后我更新了服务器上的文本。 回到应用程序,我在 webview 中的文本没有更新。
问题是您需要 reloadFromOrigin 来获取远程更改。 您还需要设置 url 请求缓存策略。 默认策略是useProtocolCachePolicy
“如果请求的缓存响应不存在,URL 加载系统将从原始源获取数据。”
因此,如果数据已经存在(这是您的情况),它不会再次从远程获取。
您需要的是忽略本地缓存数据设置 url request to reloadIgnoringLocalCacheData
“此策略指定不应使用现有缓存数据来满足 URL 加载请求。”
import UIKit
import WebKit
class WayViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: "\(waysURL)") {
let urlRequest: URLRequest = .init(
url: URL,
cachePolicy: URLRequest.CachePolicy = .reloadIgnoringLocalCacheData
)
webView.load(urlRequest)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
webView.reloadFromOrigin()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.