我想在WebView加载时显示进度,并在WebView完成加载时关闭它。 我尝试了这段代码:
import UIKit
import WebKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var WebView1: WKWebView!
@IBOutlet var WebView2: WKWebView!
let YouTubeURL = URL (string: "https://www.youtube.com/")
@IBAction func YTButtonAction(_ sender: Any) {
let YTRequest = URLRequest(url: YouTubeURL!)
WebView1.load(YTRequest)
if WebView1.isLoading {
SVProgressHUD.show()
}
func webViewDidFinishLoad(WebView1 : UIWebView) {
SVProgressHUD.dismiss()
}
}
}
但是它不起作用。 进度继续旋转。 有人知道如何解决这个问题吗?
答案 0 :(得分:4)
三个致命问题:
您必须设置代表
WebView1.delegate = self
委托方法的签名错误
func webViewDidFinishLoad(_ webView: UIWebView)
委托方法必须在类的顶层。
我认为还有第四个致命问题:我怀疑WKWebView
完全符合UIWebViewDelegate
。我想您必须采用WKNavigationDelegate
并实施webView(:didFinish:)
。
并且请遵守Swift命名约定,即变量和函数/方法名称以小写字母开头。
答案 1 :(得分:0)
答案: 我改变了
UIWebViewDelegate 到 WKNavigationDelegate
WebView1.delegate = self 到 WebView1。 navigationDelegate =自我 WKWebView属性的名称是navigationDelegat
func webViewDidFinishLoad(WebView1:UIWebView)至 func webView(_ webView:WKWebView, didFinish导航:WKNavigation!)