ユーザがクリックしたセルの値を別のビューコントローラに渡そうとしました。テーブルビューコントローラからビューコントローラへの値の受け渡し
ここに私のコードです。
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"に値を割り当てるのではなく、最初に画面が転送されるということです。つまり、2番目のVCのオブジェクト "currentProduct"はゼロです。
次に、performSegue()を追加しました。 それでも動作しませんでした。物事は2度目に表示された第2画面です。最初の時間は上記の写真と同じです。そして2回目は正しいです。
しかし、私は左上の戻るボタンをクリックしようとしました。 ProductDetailページではなくnilページに戻りました。スクリーンショットは次のとおりです。
いつものtableViewその後、最初に呼ばれて "準備" の方法のように思えます。注文を変更するには?できれば、これは修正すべきだと私は思う。
あなたの助けを願います。 ありがとうございます。問題の
"performSegue()"を削除しようとしました。しかし、転送されたオブジェクトは無かった。値がproductDisplayedに割り当てられていないようです。 –
うわー!あなたの最初の方法で動作します!どうもありがとうございました。しかし、私はまだあなたの第二の方法でそれを作る方法について混乱しています。 –
Cool。答えは受け入れられます。第2の方法ではうまくいかない理由を説明してください。 –