实例成员 'webView' 不能用于类型 'MyWebView(UIview)'

Instance member 'webView' cannot be used on type 'MyWebView(UIview)'

我正在创建一个 SDK 以从用户那里获取 url 并加载。所以我打算用 WKWebview 创建我自己的 class。但我几乎没有收到关于 Instance member 'webView' cannot be used on type 'MyWebView(UIview)'

的问题

代码:

import Foundation
import WebKit

public class MyWebView: UIView, WKNavigationDelegate {

    // initialize the view
     var webView: WKWebView!
    
    // load the view
    private func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self
    }
    
    // get the url and load the page
    public static func loadUrl(Url: String) {
        MyWebView.webView.load(URLRequest(url: URL(string: Url)!))
    }
    
    
    
}

在我的 loadUrl 中,无论用户发送什么,我都需要使用 url 并加载 url。同样在我的视图控制器中看起来像:

import UIKit

class ViewController: UIViewController {

    var webView: MyWebView!
    
    override func loadView() {
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

任何帮助都会很棒。

您的 loadUrl 函数不应是静态的,因为它需要访问实例 属性、webView。使函数成为非静态函数可以解决问题。

还有一些小的改进:不要强行解包 URL init,因为输入不正确会导致崩溃。使用可选绑定来安全地解包它。我还建议重命名 loadUrl 上的输入参数标签,因为每次调用 func 时都不必纠正 loadUrl(Url:)loadUrl( 读起来更自然。

public func loadUrl(_ urlString: String) {
    guard let url = URL(string: urlString) else { return }
    webView.load(URLRequest(url: url))
}