我的活动指示器在我的应用中加载网页时停止并隐藏,我遇到了问题。这是我删除了activityIndicator.stopAnimating()的代码,因为我把它放在代码中的任何地方都会阻止指标启动。
这是我的代码:
import UIKit
class AppointmentsViewController: UIViewController {
@IBOutlet weak var myWebView: UIWebView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
if Reachability.isConnectedToNetwork(){
webViewDidStartLoad(webView: myWebView)
let url = URL(string: "https://www.posebeautysalon.com/appointment")!
myWebView.loadRequest(URLRequest(url: url))
}
else{
print("Internet Connection not Available!")
let alertController = UIAlertController(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: .alert)
// Create the actions
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
UIAlertAction in
NSLog("OK Pressed")
}
// Add the actions
alertController.addAction(okAction)
// Present the controller
self.present(alertController, animated: true, completion: nil)
}
}
func webViewDidStartLoad(webView: UIWebView) {
activityIndicator.startAnimating()
NSLog("The webview is starting to load")
}
func webViewDidFinishLoad(webView: UIWebView) {
activityIndicator.stopAnimating()
activityIndicator.isHidden=true;
NSLog("The webview is done loading")
}
}
答案 0 :(得分:0)
看看UIWebViewDelegate
,因为你正在尝试使用它的功能,但不是继承并分配它的类。
虽然您应该查看MVC,但您可以让您的视图控制器成为您的代表。
class AppointmentsViewController: UIViewController, UIWebViewDelegate {
...
func viewDidLoad() {
super.viewDidLoad()
myWebView.delegate = self
...
}
}
之后,您的webViewDidStartLoad
和webViewDidFinishLoad
功能应按预期工作。
答案 1 :(得分:-1)
在activityIndicator
和webViewDidStartLoad
内使用webViewDidFinishLoad
就足够了。
无需隐藏它,只需确保它有{ {1}}属性为true。通过在故事板中设置此项,或在hidesWhenStopped
中设置activityIndicator.activityIndicator.hidesWhenStopped
。
webViewDidFinishLoad