从tableview传递数据到视图控制器

问题描述:

我正在Swift编写一个Xcode程序。我有一个tableview控制器与一些标签和每个单元格的图像。他们从第一个视图控制器获取数据。到现在为止还挺好。现在我想让用户点击一个单元格,它打开一个新的控制器,其中包含与单元格相同的标签和图像数据。用下面的代码打开新的控制器,但我不知道如何传输数据。如果有人能帮助我,我会如此感激。从tableview传递数据到视图控制器

下面是我倾向于使用以下码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


    let cellIdentifier = "TableView" 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableView 


    let picture = pic[indexPath.row] 



    cell.label1.text = picture.name1 
    cell.photoImage.image = picture.photo 
    cell.label2.text = picture.name2 


    return cell 


} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 


    tableView.deselectRowAtIndexPath(indexPath, animated: true) 


    let cell = indexPath.row 

    self.performSegueWithIdentifier("segue", sender: cell) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "segue"{ 

     var row = tableView.indexPathForSelectedRow 

     let viewController = segue.destinationViewController as! vc2 

    } 

} 

PS:我有从图像与识别符“SEGUE”的新控制器SEGUE。 PPS:当然,我曾尝试以下方法:Send data from TableView to DetailView Swift但是当我运行我的程序我得到的信息的错误,我的标签被意外发现零

+0

您是否已将您的标签连接到ViewController中的IBOutlets? –

+0

是的,单元格中的标签连接到tableviewcell文件,目标控制器中的标签连接到他们的控制器 – j3a3n3

你不应该需要重写didSelectRowAtIndexPath方法或致电performSegueWithIdentifier做到这一点。将IBue文件中的segue从表视图控制器的单元格拖到第二个控制器。然后,您应该将数据传递给prepareForSegue中的控制器,位于segue.destinationViewController中。您在该目标控制器上设置公共属性。

还要确保您的原型单元格中的标签已连接到IB。如果他们是他们,不应该是零。在cellForRowAtIndexPath上设置一个断点来验证这一点。

除非您正在谈论目标控制器中的标签。这些也需要与IB联系起来。然后你将它们设置为prepareForSegue。您会从

let viewController = segue.destinationViewController as! vc2 
var path = tableView.indexPathForSelectedRow 

viewController.destLabel.text = arrayData[path.row].myData // or whatever data you have from your model. 
+0

我按照您的建议操作。数据仍未传输。此外,我现在得到一个错误(标签发现零)时试图创建一个额外的单元:( – j3a3n3