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

问题描述 投票:2回答:3

我的第一个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。

我想这样打开我的网址,但可能在if-else语句中为每一行提供一个网址。

@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)

}

谢谢你的帮助

ios swift xcode
3个回答
2
投票

webViewController中创建一个字符串变量:

var urlString: String = ""  // here

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
super.viewDidLoad()

let url = URL(string: urlString) // put here
let request = URLRequest(url: url!)
angebotWebView.load(request)
         OR
if let urlString = urlString, let url = URL(string: urlString) {
    let request = URLRequest(url: url)
    angebotWebView.load(request)
}



}

在你的方法中: -

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)
}

1
投票

您可以从url中获取viewDidLoad,然后在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是您用来显示列表的源。


0
投票

首先需要在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)

        }
© www.soinside.com 2019 - 2024. All rights reserved.