在 Swift 2 和 Xcode 7 中使用来自 youtube 视频的 JSON 数据填充 UITableView
Posted
技术标签:
【中文标题】在 Swift 2 和 Xcode 7 中使用来自 youtube 视频的 JSON 数据填充 UITableView【英文标题】:Populating UITableView with JSON data from youtube videos in Swift 2 and Xcode 7 【发布时间】:2015-11-07 17:43:32 【问题描述】:我正在尝试构建一个基本上是 youtube 播放器的应用程序。 它有一个 UITableView,其中 JSON 数据将根据用户的搜索(在搜索栏中)从 youtube 中解析出来,并将其与视频图像、标题和小描述一起显示在单元格上。
如果用户单击单元格,则会打开一个新视图并显示视频播放器,用户可以在其中播放/停止/擦洗并查看有关视频的更多详细信息。
我的问题是如何用这些数据准确地填充单元格,以及如何将下一个视图与它链接起来。
有人知道怎么做吗?你能告诉我如何做的代码,或者给我一些关于在哪里找到答案的建议吗?
提前致谢! :)
【问题讨论】:
【参考方案1】:您首先必须创建一个 UITable 并实现委托方法以及一个自定义类,如果您不希望该类的默认行为,该类将充当 UITable 的单元格。
为了将数据传递给细节,您将使用称为 segue 的东西,您可以查看 github 上的以下项目。
至于从 youtube 获取数据,您可能会从 youtube 获得 json 响应,您必须对其进行解码并将对象添加到列表中。然后,您只需将对象分配给对应的元素,如下所示。
//the view of every cell of the list
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
//custom cell identifier
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! ViewControllerCell
//setting up the images and casting them from strings to UIImages
let imageURL = NSURL(string: JSONGameImages[indexPath.row])
let data = NSData(contentsOfURL: imageURL!)
//setting game name, images and viewers on cells
cell.gameName?.text = JSONGameName[indexPath.row]
cell.gameViewers?.text = String (JSONViewers[indexPath.row])
cell.gameImage?.image = UIImage(data: data!)
return cell
https://github.com/renegens/Greenely
【讨论】:
你好勒内,谢谢你的回答!我已经对 UITables 和 segues 有点熟悉了,我的问题是如何将特定的 JSON 数据(缩略图、标题、描述和视频)从 youtube 解析到单元格。 更新答案。 嗨,Rene,非常感谢您抽出宝贵的时间!我还没有尝试过,因为我仍在尝试了解如何从 youtube 获取 JSON 数据,但我已经使用相同的结构创建了一个包含自定义单元格的表格 :) 我已经让 tableView 可以处理 3 个视频我手动插入,我现在要学习如何使用 youtube API,我猜是 Swifty JSON。你可以在这里看到我现在拥有的东西:link 谢谢! 你好,没问题,最好像你建议的那样开始使用像 Swifty 这样的库,因为如果你不使用它,如果让语句到达json 对象。使用 Swifty,您可以将 json 映射到一个类并在其上使用类属性。以上是关于在 Swift 2 和 Xcode 7 中使用来自 youtube 视频的 JSON 数据填充 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Swift 在 Xcode 中使用 Parse 1.7.2 和 Facebook SDK 4.1 创建新用户
如何将图像添加到 PFTableViewCell Swift 2 Xcode 7
CocoaPods 在 Xcode 7 Swift 2.2 中没有这样的模块