Показать SVProgressHUD, пока загружается UIWebView
У меня есть UIWebView
установить как вид в ViewController
, Я хотел бы показать SVProgressHUD
индикатор активности, пока веб-страница загружается, а затем закрывает его, когда он закончил, но я не могу заставить его работать. Веб-страница загружается нормально, но индикатор никогда не отображается. я знаю SVProgressHUD
настроен правильно и функционирует, но не в тех функциях, которые у меня есть.
Я верю, потому что у меня нет UIWebView
на самом деле в сцене в IB, а точнее 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 ответа
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()
}
}
Вы забыли связать делегатов, поэтому добавьте эту строку ниже
webview.delegate = self
Заметка
UIWebView устарел, поэтому используйте WKWebView