Swiftのdelegateについて
Webブラウザを作っています。
読み込み中に画面下に配置したツールバーに表示されるはずのactivityIndicatorが表示されません。おそらくWebViewのdeligateができていないせいだと思いますが…。
Xcode8対応の参考書を元にしているので、UIWebViewでの記述しか載っておらず、WKWebViewでの記述がわかりません。調べてみたものの、解決できませんでした。どなたか知恵をお貸しください。
以下は実行はできるが、Indicatorが表示されないコードです。
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var backButton: UIBarButtonItem!
@IBOutlet weak var reloadButton: UIBarButtonItem!
@IBOutlet weak var stopButton: UIBarButtonItem!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
let homeUrlString = "https://google.com"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
open(urlString: homeUrlString)
}
func open(urlString: String){
let url = URL(string: urlString)
let urlRequest = URLRequest(url: url!)
webView.load(urlRequest)
}
//MARK:- UIWebViewDelegate
func webViewDidStartLoad(_ webView: UIWebView){
activityIndicator.alpha = 1
activityIndicator.startAnimating()
backButton.isEnabled = false
reloadButton.isEnabled = false
stopButton.isEnabled = true
}
func webViewDidFinishLoad(_ webView: UIWebView)
{
activityIndicator.alpha = 0
activityIndicator.stopAnimating()
backButton.isEnabled = webView.canGoBack
reloadButton.isEnabled = true
stopButton.isEnabled = false
}
//MARK:- IBAction
@IBAction func backButtonTapped(_ sender: UIBarButtonItem) {
webView.goBack()
}
@IBAction func reloadButtonTapped(_ sender: UIBarButtonItem) {
webView.reload()
}
@IBAction func stopButtonTapped(_ sender: UIBarButtonItem) {
webView.stopLoading()
}
}