Ios 为UIWebkit赋值并更改实例化ViewController[Swift 4]

Ios 为UIWebkit赋值并更改实例化ViewController[Swift 4],ios,swift,xcode,Ios,Swift,Xcode,我在第一个ViewController中有一个tableView。它的功能之一就是这个 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("Row \(indexPath.row) selected") let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

我在第一个ViewController中有一个tableView。它的功能之一就是这个

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("Row \(indexPath.row) selected")

    let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

    let webViewController = mainStoryboard.instantiateViewController(withIdentifier: "webViewController") as! webViewController
    self.navigationController?.pushViewController(webViewController, animated: true)
}
正如您所看到的,我希望在选中一行时更改viewController,并根据选择在下一个viewController上显示网站。我不知道如何将行值传递给下一个ViewController或在此函数中设置webView

我想像这样打开我的url,但可能是在if-else语句中为每一行打开一个url

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string:"https://www.google.com")
    let request = URLRequest(url: url!)

    angebotWebView.load(request)

}
感谢您的帮助

您可以从viewDidLoad中获取url,然后在didSelect中创建实例时更改其值,如下所示:

@IBOutlet weak var webView: WKWebView!

var urlString:String?

override func viewDidLoad() {
    super.viewDidLoad()

    if let urlString = urlString, let url = URL(string: urlString) {
        let request = URLRequest(url: url)
        angebotWebView.load(request)
    }

}
在tableView的didSelect方法中:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("Row \(indexPath.row) selected")

    let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

    let webViewController = mainStoryboard.instantiateViewController(withIdentifier: "webViewController") as! webViewController
    webViewController.urlString = tableViewDataSource[indexPath.row]
    self.navigationController?.pushViewController(webViewController, animated: true)
}

这里,tableViewDataSource是用于显示列表的源。

在webViewController中创建字符串变量:

在这种方法中:-

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Row \(indexPath.row) selected")

let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let webViewController = mainStoryboard.instantiateViewController(withIdentifier: "webViewController") as! webViewController
webViewController. urlString = yourUrlArray[indexPath.row]  // call it here
self.navigationController?.pushViewController(webViewController, animated: true)
}

首先,您需要在webViewController中创建var,例如

var url: String?
然后像下面那样调用webViewController

if let vc = storyboard.instantiateViewController(withIdentifier: "webViewController") as? webViewController {
            vc.url = //indexPath.row
            self.navigationController?.pushViewController(vc, animated: true)

        }

您如何在当前的webViewController实现中加载url?@hardikparmar updatedI已经添加了我的答案。先生,请检查一下你让我高兴了。非常感谢:强制展开通常不是一个好的实践。网址!在此代码中
if let vc = storyboard.instantiateViewController(withIdentifier: "webViewController") as? webViewController {
            vc.url = //indexPath.row
            self.navigationController?.pushViewController(vc, animated: true)

        }