如何避免将一百万个视图控制器用于表视图列表?

时间:2019-01-28 16:47:16

标签: ios swift user-interface uiviewcontroller

这是我想做的一个例子。

您拥有一个包含不同视频列表的表格视图。当您单击视频时,它将带您到详细的视图控制器(顶部的视频,下面的描述)。现在,我目前正在创建一个全新的视图控制器,添加视频/文本,链接segue,然后创建另一个视图控制器并重新开始。除了拥有一百万个视图控制器之外,您还不能仅使用一个视图控制器来执行此操作,并从一个快速文件中输入文本/视频吗?我是相对较新的人,所以如果有人可以清楚地说明过程,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

您只需要一个VC即可显示您拥有的许多视频。

假设您有一个这样的模型:

struct Video {
    let videoLink: URL
    let description: String
}

您的表视图控制器使用称为Video的{​​{1}}数组作为其数据源。

在您的videos方法中,您可以获取选定的视频并使用选定的视频作为发送者进行查找:

didSelectRowAt

现在创建一个override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let videoSelected = videos[indexPath.row] performSegue(withIdentifier: "showVideo", sender: videoSelected) } 文件,并执行以下操作:

VideoViewController.swift

然后,返回到表格视图控制器,并覆盖class VideoViewController: UIViewController { var video: Video! // write code for this VC to display not a specific video, but "self.video" // For example, instead of setting the label's text to a hardcoded description, set it to "self.video.description" }

prepareForSegue

答案 1 :(得分:2)

是的,通过执行此操作(称为依赖注入),您只能使用2个vcs(列表和详细信息)

let vc = YourTableVC()
vc.arr = // set arr here
present///

class YourTableVC : UITableViewController {
  var arr = [YourModel]()
}

模型在哪里

struct YourModel {
  // add properties
}

相同的想法适用于从列表到详细信息的导航