ios - 选择选项卡时如何刷新或重新加载 WKwebview
问题描述
我有一个选项卡式应用程序,它加载单独的内部文件 WKwebviews。我现在需要在选择选项卡时刷新 WKwebview。
我想我需要在 viewWillAppear 中添加所需的代码,但是尝试在此方法上添加一些代码时没有任何效果。
有没有人对我如何实现这一目标有任何建议
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
webView.configuration.userContentController.add(self, name: "jsHandler")
let bundleURL = Bundle.main.resourceURL!.absoluteURL
let html = bundleURL.appendingPathComponent("main/index.html") //Loads internal HTML files
webView.loadFileURL(html, allowingReadAccessTo:bundleURL)
webView!.uiDelegate = self
webView.allowsBackForwardNavigationGestures = true //Allows 'safari' style gestures swipe back etc
}
override func viewWillAppear(_ animated: Bool) {
//Nothing
}
更新:为了解决这个问题,我将上面的代码添加到viewDidAppear
方法中,而不是viewDidLoad
. 这解决了这个问题。JS 消息处理程序仍然需要在viewDidLoad
.
例子:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
webView.configuration.userContentController.add(self, name: "jsHandler")
}
override func viewDidAppear(_ animated: Bool) {
//webView.configuration.userContentController.add(self, name: "jsHandler")
let bundleURL = Bundle.main.resourceURL!.absoluteURL
let html = bundleURL.appendingPathComponent("index.html") //Loads internal HTML files
webView.loadFileURL(html, allowingReadAccessTo:bundleURL)
webView!.uiDelegate = self
webView.allowsBackForwardNavigationGestures = true //Allows 'safari' style gestures swipe back etc
}
解决方案
在每个选项卡操作上尝试这样的操作:
func reloadTabAction() {
if let url = webView.url {
webView.reload()
} else {
webView.load(URLRequest(url: originalURL))
}
}
推荐阅读
- python - 处理 pathpy 可视化的元组数据
- flutter - 当应用程序从触发的 Intent 进入前台时 Flutter Capture 事件
- typescript - createBottomTabNavigator 上的 React-Native 图标不出现
- php - 如何更改按钮文本,取决于网站 slug(PHP、Wordpress)
- rest - 外部 API 关闭时的 REST API 状态 - 最佳实践
- php - Hash::salt 方法的问题
- sql - PL/pgSQL 中的“格式错误的数组文字”错误
- xml - 如何在另一个节点内部时从一个节点获取信息
- jmeter - 性能测试的理想测试持续时间
- html - 无法使用 webbrowser 控件设置单选按钮检查值