###前提・実現したいこと
Xcode8.0/Swift3で簡易的なBMI値の計算アプリを作っています
入力画面で身長、体重、年齢の値を入力、計算ボタンを押すと計算し、BMI値や肥満度など複数の結果を結果画面の変数に代入
結果画面へ引き継ぎを行い、遷移して結果表示という処理を行いたいのですが、変数の引き継ぎに関する部分がなかなか上手くできません
ボタンを押した時に値が正しく入力されていなかったり、入力された値が極端に小さい、大きい場合は画面は遷移せずエラーメッセージを出すようにしたいので
ボタンを押した時の@IBAction内に記述することで画面遷移と変数の引き継ぎ処理を行っています
###発生している問題・エラーメッセージ
計算ボタンを押した時、画面は遷移するが結果画面の答えを表示するラベルには反映されない
###該当のソースコード
Swift
1 FirstViewController.Swift 2 3 @IBAction func Calculation(_ sender: Any) { 4 //テキストフィールドに入力された身長と体重の値をfloat型に変換 5 let height:Float? = Float(Textheight.text!) 6 let weight:Float? = Float(Textweight.text!) 7 let age:Int? = Int(Textage.text!) 8 9 //追記箇所 10 //身長もしくは体重に何も入力されていない場合(エラー) 11 if height == nil || weight == nil 12 { 13 Error.text = "正常に値が入力されていないため\n計算できません。\n再入力してください。" 14 } 15 16 //身長が80cm以下or220cm以上、体重が20kg以下or300kg以上(異常数値を弾く処理) 17 else if height! <= 80 || height! >= 220 || weight! <= 20 || weight! >= 300{ 18 Error.text = "規定の範囲外のため\n計算できません。\n再入力してください。" 19 } 20 21 //後々結果画面のテキストへ代入するBMI値や肥満度を代入する変数の宣言 22 var Ca:String! 23 var St:String! 24 var Ad:String! 25 var StWe:String! 26 var Id:String! 27 var Me:String! 28 29 // 30 //入力された身長、体重などからBMI値の計算処理を行うプログラム 31 //(今回の内容には特に関係ないため省きます) 32 //この処理の中で上記で宣言してあるCaやStに算出されたBMI値等を代入しています 33 // 34 35 present(SecondViewController, animated: true, completion: nil) 36 37 } 38 //SecondViewControllerの 39 override func prepare(for segue: UIStoryboardSegue, sender: Any?){ 40 let Second = segue.destination as! SecondViewController 41 //BMI値等算出された値を渡す 42 Second.Cal = Ca 43 Second.Sta = St 44 Second.Adv = Ad 45 Second.StaWei = StWe 46 Second.Ide = Id 47 Second.Met = Me 48 } 49
Swift
1 SecondViewController.Swift 2 3 import UIKit 4 5class SecondViewController: UIViewController { 6 7 //UIラベルの設定 8 //をここで行っています 9 10 //ViewControllerから受け取る変数 11 var Cal = "" 12 var Sta = "" 13 var Adv = "" 14 var StaWei = "" 15 var Ide = "" 16 var Met = "" 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 21 //ラベルにFirstViewControllerから受け取った値を表示 22 CalculationResult.text = Cal 23 Standard.text = Sta 24 Advice.text = Adv 25 StandardWeight.text = StaWei 26 Ideal.text = Ide 27 MetabolismStandard.text = Met 28 29 // Do any additional setup after loading the view. 30 } 31 32 override func didReceiveMemoryWarning() { 33 super.didReceiveMemoryWarning() 34 // Dispose of any resources that can be recreated. 35 } 36
###補足情報(言語/FW/ツール等のバージョンなど)
冒頭でも述べた通り
Xcode8.0
Swift3
で作っています
Swiftを触り始めてまだほんの少ししか経っておらず粗だらけのプログラムですがどうかご教授のほどよろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/13 07:01
2017/04/13 07:17
2017/04/13 07:36
2017/04/13 07:42 編集
2017/04/13 08:34
2017/04/13 08:36
2017/04/13 08:38
2017/04/13 08:51
2017/04/14 00:18
2017/04/14 00:40 編集
2017/04/14 00:56
2017/04/14 01:06
2017/04/14 01:31
2017/04/14 01:35
2017/04/14 01:55
2017/04/14 01:55
2017/04/14 02:04
2017/04/14 02:18