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



我正在创建一个SDK来从用户那里获取url并加载。所以我正在用WKWebview创建我自己的类。但是我得到了关于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。使函数成为非静态函数解决了这个问题。

还有几个小改进:不要强制打开URLinit,因为输入不正确会导致崩溃。请使用可选绑定来安全地展开它。我还建议重命名loadUrl上的输入参数标签,因为每次调用func时都必须去掉loadUrl(Url:)是没有意义的,loadUrl(读取起来更自然。

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

最新更新