【问题标题】:Cannot assign value of type 'ViewController' to type 'WKNavigationDelegate?'无法将“ViewController”类型的值分配给“WKNavigationDelegate”类型?
【发布时间】:2020-03-31 08:24:26
【问题描述】:

我是 webkit 的新手。

我想将我的 WKWebView 委托给我的视图控制器,但它给了我错误:

无法将类型“ViewController”的值分配给类型“WKNavigationDelegate?”

我的代码:

import UIKit
import WebKit
class ViewController: UIViewController {

    @IBOutlet weak var webKitComponent: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webKitComponent.navigationDelegate = self
    }

}

【问题讨论】:

  • 简而言之,您必须通过 class ViewController: UIViewController, WKNavigationDelegate 让您的班级确认该协议,它还会提示您添加您没有的任何功能。但是作为一个新人你要知道这个问题很受欢迎,所以你必须在提问之前搜索它。您可能已经搜索过它,但在搜索中使用了特定名称,例如 ViewControllerWKNavigationDelegate。确保搜索尽可能通用的错误,例如“无法将类型的值分配给类型委托”。

标签: swift xcode webview storyboard wkwebview


【解决方案1】:

添加

extension ViewController: WKNavigationDelegate {
    private func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        debugPrint("didCommit")
    }

    private func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        debugPrint("didFinish")
    }

    private func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        debugPrint("didFail")
    }
}

【讨论】:

    【解决方案2】:

    添加到@Sh_Khan 的答案;您的错误的原因是类 ViewController 不符合协议 WKNavigationDelegate 开箱即用。

    您需要通过添加协议和所需的方法使其符合要求,正如 Sh_Khan 向您展示的那样。

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2019-12-03
      • 2017-08-07
      • 2021-03-08
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多