如何将 URL 传递给自定义 WKWebView 控制器?



我正在使用WKWebView从TableView中包含的列表中打开URL。但是,我无法弄清楚如何将 URL 从 TableView 控制器传递到我创建的WKWebView类。我的类继承自UIViewController.

到目前为止,我已经尝试按照 Aaron Rasmussen 关于如何在 Swift 中编写 UIViewController 的初始化方法的说明创建自定义初始值设定项,但是当我这样做时,我最终会得到错误:

调用中的参数标签不正确(具有"url:",预期的"编码器:"(

而且我不知道如何调用新的初始值设定项而不是默认的初始值设定项(超级的初始化?

任何建议将不胜感激。我不确定我是否接近最佳解决方案,或者我是否缺少一些使将 URL 传递给WKWebView变得容易的东西。

WKWebView类:

class WKBrowserController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
var webURL: URL
init(url: URL, nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?){
self.webURL = url
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init?(coder aDecoder: NSCoder) {
self.webURL = URL(string: "www.google.com")!
super.init(coder: aDecoder)
}
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
self.view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
webView.load(URLRequest(url: webURL))
}

表视图控制器

class TableViewController: UITableViewController {
...
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
showHome(indexPath: indexPath)
}
func showHome(indexPath: IndexPath){
if let url = URL(string: urlString){
let customWebController = WKBrowserController(url: urlString) // Error here
present(customWebController, animated: true)
}
}

为什么不只是

class WKBrowserController: UIViewController, WKNavigationDelegate {
var webView: WKWebView?
var webURL: URL? { didSet {
self.navigate()
}
}
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
self.view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
self.navigate()
}
fileprivate func navigate() {
if let url = self.webURL {
webView.load(URLRequest(url: url))
}
}

然后在表格视图中

func showHome(indexPath: IndexPath){
if let url = URL(string: urlString) {
let customWebController = WantedBrowserController()
customWebController.webURL = url
present(customWebController, animated: true)
}
}

相关内容

  • 没有找到相关文章

最新更新