如何在传递给另一个类的 WKWebView 上使用 didFinish 导航



我正在设置一个应用程序,其中WKWebView对象在一个类中创建,然后传递给另一个类进行处理,但是当我在第二个类中使用didFinish navigation时,它永远不会被调用。

我添加了WKNavigationDelegate协议,并设置了navigationDelegate = self

class one: UIViewController {
   var webView: WKWebView = WKWebView();
    override func viewDidLoad(){
      var second = Second()
      second.web = webView;
      second.test()
   } 
}
class second: NSObject, WKNavigationDelegate {
  var web: WKWebView? = nil;
  func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
     print("Test")
  }
  func test(){
     self.web!.load(URLRequest(url: URL(string: "https://google.com")!))
  }
}

我从未看到"测试"消息。

使其成为保留对象的实例 var,以便调用委托

var second = Second() /// << here
override func viewDidLoad(){
  super.viewDidLoad()
  ......
}

func test(){ 
   self.web!.navigationDelegate = self
   self.web!.load(URLRequest(url: URL(string: "https://google.com")!)) 
}
import UIKit
import WebKit
class WKWebViewController: UIViewController, WKNavigationDelegate {
    @IBOutlet weak var webWK: WKWebView!
    @IBOutlet weak var activityIndi: UIActivityIndicatorView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        webWK.navigationDelegate = self
        let appStoreURL = URL(string: "https://google.com")
        webWK.load(URLRequest(url: appStoreURL!))
    }
    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        activityIndi.startAnimating()
    }
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        activityIndi.stopAnimating()
    }
}

最新更新