Realmからデータを取ってきて前の画面のtextFieldに代入したい
Realmにからデータを取ってきて前の画面にもどる際に、前の画面のtextFieldに取ってきたデータの値を入れたいと考えています。
###エラー
cellをタップして前の画面に戻ろうとすると下記のエラーが表示されます
Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
エラーの場所は下記の//の場所にあります。
AllClassesTableViewController
1override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 2 //セルの選択の解除 3 tableView.deselectRow(at: indexPath, animated: true) 4 let realm = try! Realm() 5 let allClasses = realm.objects(classModel.self) 6 performSegue(withIdentifier: "goBack", sender: allClasses[indexPath.row]) 7 8 let previousVC = DetailsTableViewController.self 9 10 } 11 12 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 13 if segue.identifier == "goBack"{ 14 if let previousVC = segue.destination as? DetailsTableViewController{ 15 let selectedClass = (sender as? classModel)! 16 print(selectedClass) 17 print(sender) 18 19 previousVC.subjectTextField.text = selectedClass.subjectName //ここにエラー 20 previousVC.roomTextField.text = selectedClass.roomNum 21 previousVC.termTextField.text = selectedClass.teacherName 22 previousVC.pointsTextField.text = selectedClass.points 23 previousVC.selected = true 24 } 25 } 26 }
試したこと
print(selectedClass)
で見てみましたがしっかり値は入っていたので、previousVC.roomTextField.text
にnil
関係の問題が発生していると考えられるのですが調べてもわかりませんでした。
分かる方教えていただけると幸いです。
previousVC の subjectTextField が nil だと思うので、Storyboard で subjectTextField の接続を確認しましょう。
hoshi-takanoriさん
追記に画像を載せました。
接続はできていると思います。
hoshi-takanoriさん
if文使ってsubjectTextFieldを調べたらnilになってました。
接続できているのになぜnilになるのでしょうか?
あ、goBack という segue が unwind segue じゃなくて普通の segue だったら、元の画面に戻るのではなく、新しく DetailsTableViewController を作ってそれを開くことになります。その場合、prepare(for segue:) ではまだ view は作られてないので subjectTextField は nil になりますね。
unwind segue のやり方は以下の記事などを参考にしてください。
https://qiita.com/mst/items/2f5f6c7d24341b88f7df
ありがとうございます。
画面に戻ることはできました。
回答1件
あなたの回答
tips
プレビュー