我試圖將用戶單擊的單元格的值傳遞給另一個視圖控制器。從表格視圖控制器傳遞值到視圖控制器
這是我的代碼。
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頁面。截圖如下。
這似乎是 「準備」 方法總是被稱爲第一次那麼的tableView。如何更改訂單?如果可以,我認爲這應該是固定的。
希望能得到您的幫助。 謝謝。
我試圖刪除「performSegue()」。但轉移的對象當時沒有。這似乎是價值沒有分配給productDisplayed。 –
哇!你的第一種方式有效!非常感謝你。但我仍然對如何以第二種方式製作它感到困惑。 –
很酷。答案被接受。你能解釋爲什麼第二種方式不起作用嗎? –