我尝试将用户单击的单元格的值传递到另一个视图控制器。
这是我的代码。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
productDisplayed = currentProductList[indexPath.row] as? Product
performSegue(withIdentifier: "ProductDetailSegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if ( segue.identifier == "AddProductSegue"){
let controller: AddProductViewController = segue.destination as! AddProductViewController
controller.delegate = self
}
if ( segue.identifier == "ProductDetailSegue"){
let controller: ProductDetailsViewController = segue.destination as! ProductDetailsViewController
controller.currentProduct = productDisplayed
}
}
首先,我没有写“performSegue()”。 我遇到的问题是屏幕首先转移,而不是将值分配给“productDisplayed”,这意味着第二个VC中的对象“currentProduct”为空。
然后我添加了“performSegue()”。 它仍然没有起作用。问题在于第二个屏幕显示了两次。第一次与上面的图片相同。第二次是正确的。
但是当我尝试点击左上角的返回按钮时。它返回到空页面,而不是ProductDetail页面。截图如下。
似乎“prepare”方法总是被首先调用,然后是tableView。如何改变顺序?如果可以的话,我认为应该解决这个问题。
希望得到您的帮助。 谢谢。