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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

2回答

410閲覧

割り勘アプリを作成しています。

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2018/05/20 14:19

編集2018/05/21 04:12

リセットボタンを実装したいです。

割り勘アプリを作成していて、
計算して結果を出した後に、
リセットボタンを押すと
人数と金額に入力するされた数字が
空欄の状態になるようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージはないです。

該当のソースコード

swift

1 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var ninzu: UITextField! 7 @IBOutlet weak var kingaku: UITextField! 8 @IBOutlet weak var kekka: UILabel! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view, typically from a nib. 13 14 self.ninzu.keyboardType = UIKeyboardType.numberPad 15 self.kingaku.keyboardType = UIKeyboardType.numberPad 16 } 17 // ナンバーパッドで入力 18 override func didReceiveMemoryWarning() { 19 super.didReceiveMemoryWarning() 20 // Dispose of any resources that can be recreated. 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 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) 30 //追加するアクションの設定 31 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 32 //設定したアラートアクションをUIAlertControllerに追加する 33 alertController.addAction(ryoukaiAction) 34 //アラートを表示 35 present(alertController, animated: true, completion: nil) 36 } 37        38     else { 39 40 guard let kingakuInt = Int(kingaku), let ninzuInt = Int(ninzu) else{ 41 // Int型に変更できない文字が入力された場合 42 return 43 } 44 45 guard kingakuInt > 100, ninzuInt > 1 else{ 46 // 金額100以下、人数に0以下が入力された場合 47 return 48 } 49 50 51 let intKekka = kingakuInt / ninzuInt 52 var result = 0 53 if kingakuInt % ninzuInt == 0 { 54 result = intKekka 55 } else { 56 // 100単位で切り上げ 57 result = Int(ceil(Double(intKekka) / 100) * 100) 58 } 59 print("(result)円") 60 } 61 62 } 63 64} 65 66

試したこと

初学者でググったのですが、
自分の知識では対応できず、
こちらで質問させて頂いております。

補足情報(FW/ツールのバージョンなど)

最新のソースコード

swift

1 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var ninzu: UITextField! 7 @IBOutlet weak var kingaku: UITextField! 8 @IBOutlet weak var kekka: UILabel! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view, typically from a nib. 13 14 self.ninzu.keyboardType = UIKeyboardType.numberPad 15 self.kingaku.keyboardType = UIKeyboardType.numberPad 16 } 17 18 override func didReceiveMemoryWarning() { 19 super.didReceiveMemoryWarning() 20 // Dispose of any resources that can be recreated. 21 } 22 23 24 25 @IBAction func keisan(_ sender: UIButton) { 26 27 guard let kingaku = kingaku.text, let ninzu = ninzu.text else { return } 28 29 if kingaku.isEmpty || ninzu.isEmpty { 30 //UIAlertControllerインスタンスの作成 31 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) 32 //追加するアクションの設定 33 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 34 //設定したアラートアクションをUIAlertControllerに追加する 35 alertController.addAction(ryoukaiAction) 36 //アラートを表示 37 present(alertController, animated: true, completion: nil) 38 39 } else { 40 guard let kingakuInt = Int(kingaku), let ninzuInt = Int(ninzu) else{ 41 // Int型に変更できない文字が入力された場合 42 return 43 } 44 45 guard kingakuInt > 100, ninzuInt > 1 else{ 46 // 金額、人数に0以下が入力された場合 47 48 let alertController = UIAlertController(title: "エラー", message: "数字が無効です", preferredStyle: .alert) 49 //追加するアクションの設定 50 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 51 //設定したアラートアクションをUIAlertControllerに追加する 52 alertController.addAction(ryoukaiAction) 53 //アラートを表示 54 present(alertController, animated: true, completion: nil) 55 56 return 57 } 58 59 60 let intKekka = kingakuInt / ninzuInt 61 var result = 0 62 if kingakuInt % ninzuInt == 0 { 63 result = intKekka 64 } else { 65 // 100単位で切り上げ 66 result = Int(ceil(Double(intKekka) / 100) * 100) 67 } 68 print("(result)円") 69 } 70 71 } 72 @IBAction func reset(_ sender: UIButton) { 73 } 74 ninzu.text = "" 75 kingaku.text = "" 76} 77

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

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

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

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

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

guest

回答2

0

回答頂いたのとは別で自己解決できたことを追記しておきます。

ナンバーパッドを表示されないバグは
頭についてたself.を削除したら改善されました。

またリセットボタンを押すと、
結果が表示されるラベルが、
「○○円」から「結果」に戻るように変更しました。

swift

1 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var ninzu: UITextField! 7 @IBOutlet weak var kingaku: UITextField! 8 @IBOutlet weak var kekka: UILabel! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view, typically from a nib. 13 14 ninzu.keyboardType = UIKeyboardType.numberPad 15 kingaku.keyboardType = UIKeyboardType.numberPad 16 } 17 18 override func didReceiveMemoryWarning() { 19 super.didReceiveMemoryWarning() 20 // Dispose of any resources that can be recreated. 21 } 22 23 24 25 @IBAction func keisan(_ sender: UIButton) { 26 27 guard let kingaku = kingaku.text, let ninzu = ninzu.text else { return } 28 29 if kingaku.isEmpty || ninzu.isEmpty { 30 //UIAlertControllerインスタンスの作成 31 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) 32 //追加するアクションの設定 33 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 34 //設定したアラートアクションをUIAlertControllerに追加する 35 alertController.addAction(ryoukaiAction) 36 //アラートを表示 37 present(alertController, animated: true, completion: nil) 38 39 } else { 40 guard let kingakuInt = Int(kingaku), let ninzuInt = Int(ninzu) else{ 41 // Int型に変更できない文字が入力された場合 42 return 43 } 44 45 guard kingakuInt > 100, ninzuInt > 1 else{ 46 // 金額、人数に0以下が入力された場合 47 48 let alertController = UIAlertController(title: "エラー", message: "数字が無効です", preferredStyle: .alert) 49 //追加するアクションの設定 50 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) 51 //設定したアラートアクションをUIAlertControllerに追加する 52 alertController.addAction(ryoukaiAction) 53 //アラートを表示 54 present(alertController, animated: true, completion: nil) 55 56 return 57 } 58 59 60 let intKekka = kingakuInt / ninzuInt 61 var result = 0 62 if kingakuInt % ninzuInt == 0 { 63 result = intKekka 64 } else { 65 // 100単位で切り上げ 66 result = Int(ceil(Double(intKekka) / 100) * 100) 67 } 68 print("(result)円") 69 kekka.text = "(result)円" 70 } 71 72 } 73 @IBAction func reset(_ sender: UIButton) { 74 ninzu.text = "" 75 kingaku.text = "" 76 kekka.text = " 結果 " 77 78} 79 80} 81 82

投稿2018/05/22 03:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

各テキストフィールドに空文字を代入すれば良いと思います。

swift

1@IBAction func keisan(_ sender: UIButton) { 2 ...今までの処理 3} 4 5@IBAction func reset(_ sender: UIButton) { 6 ninzu.text = "" 7 kingaku.text = "" 8} 9

投稿2018/05/20 14:27

編集2018/05/21 04:22
_Kentarou

総合スコア8490

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

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

退会済みユーザー

退会済みユーザー

2018/05/20 14:47

以下のエラーが出てきてしまいました。。 Expected declaration
_Kentarou

2018/05/20 15:30

私の書いた処理をViewControllerのクラスの中に紐づけて書いてますか?
退会済みユーザー

退会済みユーザー

2018/05/20 15:57

紐付けとはコントロールキーで引っ張ってくるやつですか?
_Kentarou

2018/05/20 21:47

そうです。@IBActionです。
退会済みユーザー

退会済みユーザー

2018/05/21 00:40

その動作はされていますね、、 他に要因として考えられることはありますでしょうか?
_Kentarou

2018/05/21 03:39

今の状態のコードを更新して載せてもらえますか?
退会済みユーザー

退会済みユーザー

2018/05/21 04:13

更新致しましたので、 確認をお願いいたします。
_Kentarou

2018/05/21 04:23

そのの場所ではうまくいきせん、@IBAction func keisan(_ sender: UIButton)のスコープ(かっこ{})から出したところにおいてください。 回答も変更しました。
退会済みユーザー

退会済みユーザー

2018/05/21 09:28

以下2つを @IBAction func keisan(_ sender: UIButton) 内に入れることでテキストをリセットすることには成功しました。 ninzu.text = "" kingaku.text = "" これ以上{}から出してしまうと class ViewController: UIViewController から出てしまいませんか? リセットボタンが正常に処理されていれば 位置変更は必要ないでしょうか?
退会済みユーザー

退会済みユーザー

2018/05/22 02:30

解決しました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問