无法使用CoreData将数据从UITableView传递到ViewController

时间:2018-10-07 08:15:07

标签: ios swift uitableview

这是我将CoreData中的值添加到UITableView中的方法。请注意,我已经放置了一个使用Label和Image View的自定义单元格。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? CellTableViewCell
    let cars = carsArray[indexPath.row]
    cell?.lblNoPlate.text = cars.carNoPlate
    cell?.imgView.image = UIImage(data: cars.image!)
    return cell!

}

通过查看一些教程和答案,我被告知将值传递给新的ViewController,如下所示:

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

    let Storyboard = UIStoryboard(name: "Main", bundle: nil)
    let DvC = Storyboard.instantiateViewController(withIdentifier: "CarDetailsAdminViewController") as! CarDetailsAdminViewController
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? CellTableViewCell

    DvC.NoPlate = (cell?.lblNoPlate.text)!
    self.navigationController?.pushViewController(DvC, animated: true)


}

一切正常。只是当我点击任意一个单元格时,它会转到新的viewcontroller,但是在我希望传递字符串的地方,它只是说“ Label”。我猜Label是快速分配给任何UILabel的默认文本。它不能传递在UITableView中显示的实际数据。相反,无论我选择哪个单元格,它始终显示“标签”

1 个答案:

答案 0 :(得分:1)

与其从单元格中取出队列,不如直接从您的carsArray中获取数据。

像这样更改您的didSelectRowAt方法:

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

    let Storyboard = UIStoryboard(name: "Main", bundle: nil)
    let DvC = Storyboard.instantiateViewController(withIdentifier: "CarDetailsAdminViewController") as! CarDetailsAdminViewController
    DvC.NoPlate = carsArray[indexPath.row].carNoPlate
    self.navigationController?.pushViewController(DvC, animated: true)
}