从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但是当我运行我的程序我得到的信息的错误,我的标签被意外发现零
你不应该需要重写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.
我按照您的建议操作。数据仍未传输。此外,我现在得到一个错误(标签发现零)时试图创建一个额外的单元:( – j3a3n3
您是否已将您的标签连接到ViewController中的IBOutlets? –
是的,单元格中的标签连接到tableviewcell文件,目标控制器中的标签连接到他们的控制器 – j3a3n3