お世話になっております。
Swift3にて簡単なBMI値計算アプリを開発中なのですが、入力された値から算出された結果(BMI値等)をアプリ内に保存し、記録して表示するという機能を実装しようとしております。
現在そのために記録用の画面を用意し、結果画面に配置されている「記録する」ボタンを押すと保存する値を引き継いで記録画面に遷移、結果を記録、という形で実装したいのですが、
「結果画面から結果を記録せず入力画面に戻る」という操作を行うとランタイムエラーが発生することを確認してしまい、その解決策をこちらでご教授願いたい所存です。
以下が問題部分のコードになります。(問題部分以外は省略してあります)
swift
1SecondViewController.Swift //2つ目の画面(結果画面のプログラムです) 2 3 @IBAction func Button(_ sender: Any) { 4 performSegue(withIdentifier: "toThirdSegue", sender: self) //「記録する」ボタンが押された時の処理、記録画面へ遷移する 5 } 6 7 override func prepare(for segue: UIStoryboardSegue, sender: Any?){ 8 let Third = segue.destination as! ThirdViewController //ここでsignal SiGABRTが発生 9 //記録画面へ値を渡す 10 Third.Calc = Cal 11 Third.Weighty = Weight 12 }
signal SiGABRTの発生原因はおそらく
「Second(結果)からThird(記録)へ遷移する時だけ呼び出したいprepare関数が、Second(結果)からFirst(入力)へ遷移する時にも呼び出されており、遷移先と値の引き継ぎ先の不整合(?)」
が原因と睨んでいるのですが、流石にこのケースはあまりないのかインターネットで調べても確証が得られるほどの情報は得られませんでした…
個人的には
let Third = segue.destination as! ThirdViewController
の前に「ThirdViewへ遷移する時」みたいな感じの条件式をつけると解決するのかな、とは思うんですがそういう条件式ってつけられるんでしょうか…?
長文になってしまいましたがどうか宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/26 01:58 編集