我的第一个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)
}
谢谢你的帮助
在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)
}
您可以从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
是您用来显示列表的源。
首先需要在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)
}