【问题标题】:Give Value to UIWebkit and change instantiate ViewController [Swift 4]为 UIWebkit 赋予价值并更改实例化 ViewController [Swift 4]
【发布时间】:2018-11-23 21:32:23
【问题描述】:

我的第一个 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 实现中加载网址的?
  • @hardikparmar 已更新
  • 我已经添加了我的答案。请检查

标签: ios swift xcode


【解决方案1】:

在您的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!
【解决方案2】:

您可以从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 是您用来显示列表的来源。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多