質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1526閲覧

【Swift3】画面遷移時にランタイムエラーが発生する

Ruthi

総合スコア65

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/04/26 00:36

お世話になっております。
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へ遷移する時」みたいな感じの条件式をつけると解決するのかな、とは思うんですがそういう条件式ってつけられるんでしょうか…?

長文になってしまいましたがどうか宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

どの遷移かはsegue.identifierで判断して下さい。

投稿2017/04/26 01:45

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ruthi

2017/04/26 01:58 編集

`if (segue.identifier == "toThirdSegue")` 値渡しの前にこちらを書き足すことで正常に動作するようになりました!`segue.identifier`で判断できることを見落としておりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問