通过segue传递数据

我正在使用tableview控制器和detailView做简单的iOS应用程序。 我只想通过segue传递数据。

这是它的样子

这是它的样子。

所有我想要的是,你点击“Markíza”它将打开URLvideo编号1,如果你点击“电视JOJ”它将打开播放器中的URLvideo编号2。

我的tableview单元格:

struct Program { let category : String let name : String } var programy = [Program]() self.programy = [Program(category: "Slovenské", name: "Markíza"), Program(category: "Slovenské", name: "TV JOJ")] 

Swift的工作方式与Obj-C完全一样,但用新语言重写。 我没有很多来自你的post的信息,但让我们给每个TableViewController一个名字来帮助我的解释。

HomeTableViewController (这是你上面的截图)

PlayerTableViewController (这是你想要旅行的玩家屏幕)

这样说,在PlayerTableViewController中,你需要一个variables来存储传递的数据。 就在你的类声明下有这样的东西(如果你打算将结构存储为单个对象而不是数组:

 class PlayerTableViewController: UITableViewController { var programVar : Program? //the rest of the class methods.... 

之后有两种方法可以将数据发送到新的TableViewController。

1)使用prepareForSegue

在HomeTableViewController的底部,您将使用prepareForSegue方法来传递数据。 以下是您将使用的代码示例:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { // Create a variable that you want to send var newProgramVar = Program(category: "Some", name: "Text") // Create a new variable to store the instance of PlayerTableViewController let destinationVC = segue.destinationViewController as PlayerTableViewController destinationVC.programVar = newProgramVar } } 

一旦PlayerTableViewController加载的variables将被设置和使用

2)使用didSelectRowAtIndexPath

如果需要根据select哪个单元发送特定的数据,可以使用didSelectRowAtIndexPath。 为了这个工作,你需要在故事板视图中给你的segue一个名字(让我知道如果你也需要知道如何做到这一点)。

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { // Create a variable that you want to send based on the destination view controller // You can get a reference to the data by using indexPath shown below let selectedProgram = programy[indexPath.row] // Create an instance of PlayerTableViewController and pass the variable let destinationVC = PlayerTableViewController() destinationVC.programVar = selectedProgram // Let's assume that the segue name is called playerSegue // This will perform the segue and pre-load the variable for you to use destinationVC.performSegueWithIdentifier("playerSegue", sender: self) } 

让我知道如果你需要任何其他信息

随着Swift 3

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "MainToTimer") { let vc = segue.destination as! YourViewController vc.var_name = "Your Data" } }