Swift的工作方式与Obj-C完全相同,但是以新语言进行了改编。我从您的帖子中获得的信息不多,但是让我们给每个TableViewController命名以帮助我进行解释。
HomeTableViewController(这是您上面的屏幕截图)
PlayerTableViewController(这是您要转到的播放器屏幕)
如此说来,在PlayerTableViewController中,您需要一个变量来存储传递的数据。在类声明的下面,有类似以下内容(如果您打算将结构存储为单个对象而不是数组:
class PlayerTableViewController: UITableViewController {
var programVar : Program?
之后,您可以通过两种方式将数据发送到新的TableViewController。
1)使用prepareForSegue
在HomeTableViewController的底部,您将使用prepareForSegue方法传递数据。这是您将使用的代码示例:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
var newProgramVar = Program(category: "Some", name: "Text")
let destinationVC = segue.destinationViewController as PlayerTableViewController
destinationVC.programVar = newProgramVar
}
}
一旦PlayerTableViewController加载,变量将已经设置并可用
2)使用didSelectRowAtIndexPath
如果需要根据选择的单元格发送特定数据,则可以使用didSelectRowAtIndexPath。为此,您需要在情节提要视图中为segue命名(如果您也需要知道如何操作,请告诉我)。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedProgram = programy[indexPath.row]
let destinationVC = PlayerTableViewController()
destinationVC.programVar = selectedProgram
destinationVC.performSegueWithIdentifier("playerSegue", sender: self)
}
让我知道您是否需要其他任何信息