前提・実現したいこと
TableViewで各セルを選択して分岐 ⇨ それぞれ違う情報を取得 ⇨ 一つのUIView.Xibファイルに表示したい
現在は
トマト
スイカ
にんじん
らっかせい
じゃがいも
青パパイヤ
そら豆
を選択したら遷移後、各セルに農薬名1〜4が表示されるようになっています(後に商品名に変更)。
質問箇所
農薬名は、野菜によっては被っているためindexPathで順番に割り当ててしまうとダメだと思いますが、
どうやったら個別にIndexPathを取得でき遷移先Viewに値を渡すことが出来るのでしょうか?
まだプログラミングを始めたばかりで右も左もわかりません。
勇気を出して質問してみることにしました。
説明が下手で申し訳ありませんが、どなたかご教授お願い致します。
またご指摘があれば、是非勉強させてください。
よろしくお願い致します。
発生している問題・エラーメッセージ
該当のソースコード
swift
import UIKit class ThirdViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var thirdView: UITableView! var getCell: Int! var chosenCell: Int! let tomatoArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let suikaArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let ninzinArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let rakkaseiArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let zyagaArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let aopapaiyaArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] let soramameArray: [String] = ["農薬名1","農薬名2","農薬名3","農薬名4"] var arrayLength: Int! override func viewDidLoad() { super.viewDidLoad() thirdView.register(UINib(nibName: "thirdTableViewCell",bundle: nil),forCellReuseIdentifier: "Cell3") thirdView.delegate = self thirdView.dataSource = self switch getCell { case 0: arrayLength = tomatoArray.count case 1: arrayLength = suikaArray.count case 2: arrayLength = ninzinArray.count case 3: arrayLength = rakkaseiArray.count case 4: arrayLength = zyagaArray.count case 5: arrayLength = aopapaiyaArray.count case 6: arrayLength = soramameArray.count default: break } } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrayLength } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = thirdView.dequeueReusableCell(withIdentifier: "Cell3",for: indexPath) as! thirdTableViewCell switch getCell { case 0: cell.thirdLabel.text = tomatoArray[indexPath.row] case 1: cell.thirdLabel.text = suikaArray[indexPath.row] case 2: cell.thirdLabel.text = ninzinArray[indexPath.row] case 3: cell.thirdLabel.text = rakkaseiArray[indexPath.row] case 4: cell.thirdLabel.text = zyagaArray[indexPath.row] case 5: cell.thirdLabel.text = aopapaiyaArray[indexPath.row] case 6: cell.thirdLabel.text = soramameArray[indexPath.row] default: break } return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { chosenCell = indexPath.row performSegue(withIdentifier: "forSegue" , sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let customV = CustomView() customV.GetCell = chosenCell } }
試したこと
swichで試みたのですが、caseを0にするとString型のためエラーが起きてしまい実行できませんでした。
switch tomatoArray {
case 0:
}
補足情報(FW/ツールのバージョンなど)
Version 11.3
回答1件
あなたの回答
tips
プレビュー