我所拥有的是一个包含大约5个单元格的表视图。每个都有不同的标题,我想要的是当用户点击某个单元格时,弹出某个与他们点击的标题相关的YouTube视频(所有单元格都有不同的标题)。我正在使用WKWebView,现在只要点击一行就会弹出Youtube视频,但无论点击什么行/标题,它都是相同的Youtube视频。如何根据点击的行来获取不同的视频?
这是包含单元格/标题的ViewController的代码,它移动到的下一个视图控制器只是一个使用WebKit显示带有链接的Youtube Vid的文件。
import UIKit
class ViewController: UITableViewController {
var motivationalVideoOptions = ["Work Hard And Be Patient", "Put Yourself In A Position To Succeed", "Stop Judging Yourself", "Lose The Battle But Win The War", "Top 10 Rules For Success"]
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.prefersLargeTitles = true
title = "Choose a video"
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return motivationalVideoOptions.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "VideoOptions", for: indexPath)
cell.textLabel?.text = motivationalVideoOptions[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 80
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = storyboard?.instantiateViewController(withIdentifier: "VideoPlay") as? VideoPlayViewController {
navigationController?.pushViewController(vc, animated: true)
}
}
}
其他View Controller类:
import UIKit
import WebKit
class VideoPlayViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
var progressView: UIProgressView!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://youtu.be/T_aFqEmL5JI")!
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
}
答案 0 :(得分:0)
它只会转到一个视频的原因是因为您将网址设置为常量链接。将基于标题的变量或具有表视图单元格数据的变量放入url中。我现在正打电话,所以请耐心等待。
示例:
我触摸带有链接的子标题的单元格。我引用了Web视图并设置了视图子标题的链接。然后事情会加载变量链接。这给你想要的结果
答案 1 :(得分:0)
我在您的代码中看到的是,您在VideoPlayViewController中传递了一个constanr youtube网址。
您需要做的是在VideoPlayViewController中创建一个var,并将值分配给您在ViewController中的didSelectRowAt方法中创建的VC实例上的var。
例如: 您可以拥有一个结构或类,而不是在motivationalVideoOptions中使用字符串值。拥有2个变量title和Url。根据选择,您可以从数组中获取项目并传递url变量。