###テキストに入力された数字が1以下ならアラートを出すようにしたい
割り勘アプリを作成していて、
「人数と数字のテキストが見入力の場合ならアラートを出す。」
ということはできたのですが、
それにプラスして
「テキストに入力された数字が1以下ならアラートを出す。」
ようにしたいのですが、
初学者で独学の為、詰まってしまいました。。
もう一つfuncを追加ですれば良いのだろうかとは
思っているのですが…
[追記]
付随して質問なのですが、
計算結果が割り切れない場合、
100円単位で切り上げられるようにするには、
どこに何を追記したら良いかご教授願いたいです。
発生している問題・エラーメッセージ
特に無し
該当のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var ninzu: UITextField! 6 @IBOutlet weak var kingaku: UITextField! 7 @IBOutlet weak var kekka: UILabel! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // Do any additional setup after loading the view, typically from a nib. 12 13 self.ninzu.keyboardType = UIKeyboardType.numberPad 14 self.kingaku.keyboardType = UIKeyboardType.numberPad 15 } 16 17 override func viewDidAppear(_ animated: Bool) { 18 let Alert: UIAlertController = UIAlertController(title:"タイトル",message:"メッセージ",preferredStyle: .alert) 19 let CloseAction = UIAlertAction(title: "閉じる", style: .default) { 20 action in 21 print("閉じる") 22 23 } 24 25 Alert.addAction(CloseAction) 26 present(Alert, animated: true, completion: nil) 27 } 28 29 override func didReceiveMemoryWarning() { 30 super.didReceiveMemoryWarning() 31 // Dispose of any resources that can be recreated. 32 } 33 34 35 @IBAction func keisan(_ sender: UIButton) { 36 37 if (kingaku.text ?? "").isEmpty || (ninzu.text ?? "").isEmpty { 38 //UIAlertControllerインスタンスの作成 39 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) 40 //追加するアクションの設定 41 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 42 //設定したアラートアクションをUIAlertControllerに追加する 43 alertController.addAction(ryoukaiAction) 44 //アラートを表示 45 present(alertController, animated: true, completion: nil) 46 47 } else { 48 guard let pricetext = kingaku?.text, let _ = Int(pricetext) else{ 49 return 50 } 51 guard let numbertext = ninzu?.text, let _ = Int(numbertext) else{ 52 return 53 } 54 55 56 let intNinzu = Int(ninzu.text!)! 57 let intKingaku = Int(kingaku.text!)! 58 let intKekka = intKingaku / intNinzu 59 kekka.text = "(intKekka)円" 60 61 62 view.endEditing(true) 63 64 65 } 66 67 68} 69} 70
試したこと
ググってその関数を入れてみたりしたのですが、
上手くいきませんでした。。
補足情報(FW/ツールのバージョンなど)
最新のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var ninzu: UITextField! 6 @IBOutlet weak var kingaku: UITextField! 7 @IBOutlet weak var kekka: UILabel! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // Do any additional setup after loading the view, typically from a nib. 12 13 self.ninzu.keyboardType = UIKeyboardType.numberPad 14 self.kingaku.keyboardType = UIKeyboardType.numberPad 15 } 16 17 override func didReceiveMemoryWarning() { 18 super.didReceiveMemoryWarning() 19 // Dispose of any resources that can be recreated. 20 } 21 22 23 24 @IBAction func keisan(_ sender: UIButton) { 25 26 guard let kingaku = kingaku.text, let ninzu = ninzu.text else { return } 27 28 if kingaku.isEmpty || ninzu.isEmpty { 29 //UIAlertControllerインスタンスの作成 30 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) 31 //追加するアクションの設定 32 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 33 //設定したアラートアクションをUIAlertControllerに追加する 34 alertController.addAction(ryoukaiAction) 35 //アラートを表示 36 present(alertController, animated: true, completion: nil) 37 38 } else { 39 guard let kingakuInt = Int(kingaku), let ninzuInt = Int(ninzu) else{ 40 // Int型に変更できない文字が入力された場合 41 return 42 } 43 44 guard kingakuInt > 100, ninzuInt > 1 else{ 45 // 金額、人数に0以下が入力された場合 46 47 let alertController = UIAlertController(title: "エラー", message: "数字が無効です", preferredStyle: .alert) 48 //追加するアクションの設定 49 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 50 //設定したアラートアクションをUIAlertControllerに追加する 51 alertController.addAction(ryoukaiAction) 52 //アラートを表示 53 present(alertController, animated: true, completion: nil) 54 55 return 56 } 57 58 59 let intKekka = kingakuInt / ninzuInt 60 var result = 0 61 if kingakuInt % ninzuInt == 0 { 62 result = intKekka 63 } else { 64 // 100単位で切り上げ 65 result = Int(ceil(Double(intKekka) / 100) * 100) 66 } 67 print("(result)円") 68 } 69 70 } 71 @IBAction func reset(_ sender: UIButton) { 72 ninzu.text = "" 73 kingaku.text = "" 74 75} 76 77} 78
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/20 03:03 編集
2018/05/20 03:12
退会済みユーザー
2018/05/20 14:03
2018/05/20 14:22 編集
退会済みユーザー
2018/05/20 14:57
2018/05/20 15:35
退会済みユーザー
2018/05/20 15:55
2018/05/20 21:49
退会済みユーザー
2018/05/21 02:19 編集
2018/05/21 03:46 編集
退会済みユーザー
2018/05/21 04:10 編集
2018/05/21 04:14
退会済みユーザー
2018/05/21 09:28
2018/05/21 12:59 編集
退会済みユーザー
2018/05/22 02:21
退会済みユーザー
2018/05/22 02:34