###前提・実現したいこと
今、簡単な割り勘アプリ(合計金額/人数を結果ラベルに表示)を作っています。
そのアプリの機能の一つとして、金額あるいは人数のどちらかが空白だとアラートが表示される
###発生している問題・エラーメッセージ
アラートが表示されない。
###該当のソースコード
import UIKit //delegateの宣言 class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var resultLabel: UILabel! @IBOutlet weak var priceTextField: UITextField! @IBOutlet weak var numberTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() //delegateの所在をかく priceTextField.delegate = self numberTextField.delegate = self //各TextFieldに入力できるのは数字だけ self.priceTextField.keyboardType = UIKeyboardType.numberPad self.numberTextField.keyboardType = UIKeyboardType.numberPad } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //ボタンを押した時 @IBAction func resultButton(_ sender: Any) { if priceTextField.text == nil || numberTextField.text == nil { //UIAlertControllerインスタンスの作成 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です", preferredStyle: .alert) //追加するアクションの設定 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) //設定したアラートアクションをUIAlertControllerに追加する alertController.addAction(ryoukaiAction) //アラートを表示 present(alertController, animated: true, completion: nil) } else { guard let pricetext = priceTextField?.text, let price = Int(pricetext) else { return } guard let numbertext = numberTextField?.text, let number = Int(numbertext) else { return } let result:Double = Double(price/number) resultLabel.text = String(result) } } //delegateメソッド override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { //キーボード以外のところをタップするとキーボードを閉じる if priceTextField.isFirstResponder { priceTextField.resignFirstResponder() } //キーボード以外のところをタップするとキーボードを閉じる if numberTextField.isFirstResponder{ numberTextField.resignFirstResponder() } } }
###補足情報(言語/FW/ツール等のバージョンなど)
swift3.0
xcode8.2.1
macOS Sierra(バージョン 10.12)
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/05 06:31
2017/04/05 06:38 編集
2017/04/05 07:29
2017/04/05 10:18
2017/04/05 10:30 編集
2017/04/05 11:12