加载UIWebView时显示SVProgressHUD

时间:2018-12-19 05:28:03

标签: ios swift uiview uiwebview svprogresshud

我在UIWebView中设置了一个ViewController作为视图。我想在网页加载时显示一个SVProgressHUD活动指示器,然后在完成时将其关闭,但似乎无法正常工作。网页加载正常,但该指示器从未显示。 我知道SVProgressHUD的设置和功能正确,但在我拥有的功能中却没有。

我相信,因为我实际上在IB的场景中没有UIWebView,而是ViewController将视图设置为UIWebView,所以我使用的代码无法定位它。如果我错了,请纠正我。

这是我的代码:

import UIKit
import SVProgressHUD

class ViewController: UIViewController, UIWebViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()



        if let url = URL(string: "https://www.google.com") {
            let webView = UIWebView(frame: self.view.frame)
            let urlRequest = URLRequest(url: url)
            webView.loadRequest(urlRequest as URLRequest)
            webView.scalesPageToFit = true;
            webView.scrollView.showsHorizontalScrollIndicator = false;
            webView.scrollView.showsVerticalScrollIndicator = false;
            self.view.addSubview(webView)


        }
    }

    func webViewDidStartLoad(_ webView: UIWebView) {
        SVProgressHUD.show()
    }
    func webViewDidFinishLoad(_ webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
        SVProgressHUD.dismiss()
    }
}

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

UIWebView已被弃用,请使用WKWebView

import UIKit
import WebKit
import SVProgressHUD

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        if let url = URL(string: "https://www.google.com") {
            let webView = WKWebView(frame: self.view.frame)
            webView.navigationDelegate = self
            self.view.addSubview(webView)
            webView.load(URLRequest(url: url))
            SVProgressHUD.show()
        }
    }
}

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        print(error.localizedDescription)
        SVProgressHUD.dismiss()
    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        print("Strat to load")
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("finish to load")
        SVProgressHUD.dismiss()
    }
}

答案 1 :(得分:2)

您忘了绑定代表,因此在行下方添加

webview.delegate = self
  

注意

UIWebView 已过时,请使用WKWebView