无法在VC之间传递数据

时间:2017-08-28 11:24:58

标签: ios swift swift3

我有两个VC,我试图使用segue将数据从第一个VC传递到第二个VC。第一个VC有一个tableview,每个单元格包含一个标题和一个使用核心数据存储的描述标签。我想要在第二个VC中有每个单元格的详细视图。我初始化了两个字符串来存储来自第一个VC的值,并将它们分配给第二个VC中的字符串。

请查看以下代码:

var SelectedTitle = String()
var SelectedDisc = String()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    SelectedTitle = self.listAthkar[indexPath.row].title!
    print(SelectedTitle)
    SelectedDisc = self.listAthkar[indexPath.row].details!
    print(SelectedDisc)
    performSegue(withIdentifier: "showCell", sender: self)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "showCell") {
        var destinationVC = segue.destination as! showCellVC
        destinationVC.passedTittle = SelectedTitle
        destinationVC.passedDisc = SelectedDisc
    }
}


class showCellVC: UIViewController {

var passedTittle = String()
var passedDisc = String()
@IBOutlet weak var cellTitle: UILabel!
@IBOutlet weak var cellDisc: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    cellTitle.text = passedTittle
    cellDisc.text = passedDisc
    print("Title Passed is \(passedTittle)")
    print("Discription Passed is \(passedDisc)")
}

当我测试应用程序时,控制台会打印:

Title Passed is 
Discription Passed is 
title
Description

这是实际单元格的图片

Cell picture 知道为什么它没有将数据传递给第二个VC?

2 个答案:

答案 0 :(得分:3)

您的故事板中的tableview单元格上显示了action segue。由于您使用的是程序化的segue,因此您不需要这样做。动作segue在didSelect方法之前触发,因此segue在变量设置之前发生。

答案 1 :(得分:0)

试试这样!为“标题”和“描述”单独制作数组

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    self.performSegue(withIdentifier: "showCell", sender: indexPath)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

   if (segue.identifier == "showCell") {
    var destinationVC = segue.destination as! showCellVC
    destinationVC.passedTittle = self.listAthkar[(sender as! IndexPath).row]
    destinationVC.passedDisc = self.listAthkar[(sender as! IndexPath).row]
   }
}