gpt4 book ai didi

ios - Swift 如何让 webView 加载得更快

转载 作者:搜寻专家 更新时间:2023-11-01 07:24:35 25 4
gpt4 key购买 nike

我有一个 VideoTableController 类,它包含一个包含大量 youtube 视频的 tableview。

当一个视频被选中时,它会启动另一个 View Controller ,其中有一个 web View ,将播放指定的 YouTube 视频。

我尝试将加载视频的代码放在 videoTableController 的 prepareForSegue 函数中,但问题是 VideoPlayer Controller 尚未实例化,因此我无法修改 video_view: UIWebView 的值prepareForSegue 函数。

我想知道我是否执行此 videoPlayer() 以在 prepareForSegue 函数中实例化它,然后修改值 VideoPlayer.video_view.loadHTMLString() 是否会起作用,或者当 videoPlayer 被转至时,它的另一个实例是否会被实例化?

这是我目前在 videoPlayer 类中的内容:

var video_player_url = ""

class VideoPlayer: UIViewController {

@IBOutlet weak var video_view: UIWebView!

override func viewDidLoad() {
self.video_view.loadHTMLString("<iframe width=\"\(video_view.frame.width)\" height=\"\(video_view.frame.height)\" src=\"https://www.youtube.com/embed/\(video_player_url)\" frameborder=\"0\" allowfullscreen></iframe>", baseURL: nil)
super.viewDidLoad()
// Do any additional setup after loading the view.
}

这是调用它的我的 videoTableController 类:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("video_player_segue", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath = self.tableView.indexPathForSelectedRow

video_player_url = video_urls[indexPath!.row]
}

最佳答案

在 prepareForSegue 中,类已经被实例化,但它可能还没有从 StoryBoard 加载。这就是它能够在 prepareForSegue 中为您提供目标 Controller 的方式。常用的技术是在类中设置一些其他变量,然后在目标 Controller 的 viewWillAppear 中,使用该值来执行您想要执行的任何操作。

class VideoPlayer : ViewController {
var video_player_url: String?
@IBOutlet weak var video_view: UIWebView!

override func viewWillAppear(animated: Bool) {
if let url = self.video_player_url {
self.video_view.loadHTMLString("<iframe width=\"\(video_view.frame.width)\" height=\"\(video_view.frame.height)\" src=\"https://www.youtube.com/embed/\(video_player_url)\" frameborder=\"0\" allowfullscreen></iframe>", baseURL: nil)
}

}

}

在你的 TableView Controller 中......

class VideoTableController : UITableViewController {
// stuff goes here

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath = self.tableView.indexPathForSelectedRow
// verify that indexPath is not nil or your app will crash.
let destinationController = segue.destinationViewController as! VideoPlayer
destinationController.video_player_url = video_urls[indexPath!.row]
}

关于ios - Swift 如何让 webView 加载得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36972438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com