这是我将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中显示的实际数据。相反,无论我选择哪个单元格,它始终显示“标签”
答案 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)
}