在 WKWebView 中加载页面后,UIActivityIndicator 不会隐藏
UIActivityIndicator doesn't hide after loading page in WKWebView
我正在尝试使用 UIActivityIndicator
(在 Xcode 9 中)创建一个 WKWebView
应用程序。下面是我的代码,但是当我尝试模拟它时,activity 指示器不会停止,也不会隐藏。
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet var loader: UIActivityIndicatorView!
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "http://www.amritvani.nl")
let request = URLRequest(url: url!)
webView.navigationDelegate = self as? WKNavigationDelegate
webView.load(request)
}
func webViewDidStartLoad(webView: WKWebView){
loader.startAnimating()
}
func webViewDidFinishLoad(webView: WKWebView){
loader.stopAnimating()
loader.hidesWhenStopped = true
}
}
有人可以帮我解决这个问题吗?
你的委托方法是错误的。将 webViewDidStartLoad(webView:)
替换为:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
loader.startAnimating()
}
...和 webViewDidFinishLoad(webView:)
与此:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
loader.stopAnimating()
}
此外,您应该使 class 符合 WKNavigationDelegate
:
class ViewController: UIViewController, WKNavigationDelegate
您的代码还有两个问题。首先,你不应该将 class 转换为 WKNavigationDelegate
与 as?
如果它已经符合它:
webView.navigationDelegate = self
其次,您应该将 activity 指标的 hidesWhenStopped
属性设置为 true
在 停止它之前,最好在 Interface Builder 中或在 viewDidLoad
。这并不重要,但如果其他人阅读您的代码,它就更有意义,如果 webView(_:didFinish:)
执行多次,这也是多余的。
我正在尝试使用 UIActivityIndicator
(在 Xcode 9 中)创建一个 WKWebView
应用程序。下面是我的代码,但是当我尝试模拟它时,activity 指示器不会停止,也不会隐藏。
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet var loader: UIActivityIndicatorView!
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "http://www.amritvani.nl")
let request = URLRequest(url: url!)
webView.navigationDelegate = self as? WKNavigationDelegate
webView.load(request)
}
func webViewDidStartLoad(webView: WKWebView){
loader.startAnimating()
}
func webViewDidFinishLoad(webView: WKWebView){
loader.stopAnimating()
loader.hidesWhenStopped = true
}
}
有人可以帮我解决这个问题吗?
你的委托方法是错误的。将 webViewDidStartLoad(webView:)
替换为:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
loader.startAnimating()
}
...和 webViewDidFinishLoad(webView:)
与此:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
loader.stopAnimating()
}
此外,您应该使 class 符合 WKNavigationDelegate
:
class ViewController: UIViewController, WKNavigationDelegate
您的代码还有两个问题。首先,你不应该将 class 转换为 WKNavigationDelegate
与 as?
如果它已经符合它:
webView.navigationDelegate = self
其次,您应该将 activity 指标的 hidesWhenStopped
属性设置为 true
在 停止它之前,最好在 Interface Builder 中或在 viewDidLoad
。这并不重要,但如果其他人阅读您的代码,它就更有意义,如果 webView(_:didFinish:)
执行多次,这也是多余的。