选择标签时如何刷新或重新加载WKwebview

时间:2019-07-26 11:22:41

标签: ios swift wkwebview tabbed

我有一个选项卡式应用程序,可以加载单独的内部文件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
    }

2 个答案:

答案 0 :(得分:1)

在每个选项卡上尝试以下操作:

func reloadTabAction() {
    if let url = webView.url {
        webView.reload()
    } else {
        webView.load(URLRequest(url: originalURL))
    }
}

答案 1 :(得分:1)

我们有WKWebView的reload属性。因此,您可以直接调用该方法。 您可以在点击tabView的同时调用该方法 尝试以下代码,

webView.reload()