前提・実現したいこと
tableviewのcellをタップしたらalertが出るようにし、そのalertにはtextFieldを2つ配置します。2つのtextFieldに文字が入力されているのが確認できたら、更新ボタンを押せるようにしたいです。更新ボタンを押すとcloud firestoreを使ってInt値でデータを飛ばす仕組みなので(ここではコードを一部省略しています)空入力をふせぎたいです。エラーの解決方法をご教授願います
発生している問題・エラーメッセージ
エラー発生部分
@objc func alertTextFieldDidChange(_ sender: UITextField) { if waitTimeTextField!.text!.count > 0 && ninnzuuTextField!.text!.count > 0 { alert?.actions[0].isEnabled = true } }
エラーメッセージ
Unexpectedly found nil while unwrapping an Optional value
該当のソースコード
var alert : UIAlertController? @objc func alertTextFieldDidChange(_ sender: UITextField) { if waitTimeTextField!.text!.count > 0 && ninnzuuTextField!.text!.count > 0 { alert?.actions[0].isEnabled = true } } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) //1. Create the alert controller. alert = UIAlertController(title: "待ち時間・人数の更新", message: "待ち時間・人数を入力してください", preferredStyle: .alert) //2. Add the text field. If empty, the target action will disable yesAction alert?.addTextField(configurationHandler: { (textField) -> Void in textField.placeholder = "待ち時間" textField.keyboardType = UIKeyboardType.numberPad textField.addTarget(self, action: #selector(self.alertTextFieldDidChange(_:)), for: .editingChanged) }) alert?.addTextField(configurationHandler: { (textField) -> Void in textField.placeholder = "人数" textField.keyboardType = UIKeyboardType.numberPad textField.addTarget(self, action: #selector(self.alertTextFieldDidChange(_:)), for: .editingChanged) }) //3. Grab the value from the text field. let yesAction = UIAlertAction(title: "更新", style: .default, handler: { (action) -> Void in //let textField = self.alert?.textFields![0] // Do anything you need here }) let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル",style: .default, handler:{ (action) -> Void in print("キャンセル") }) yesAction.isEnabled = false cancelAction.isEnabled = true alert?.addAction(cancelAction) alert?.addAction(yesAction) // 4. Present the alert. self.present(alert!, animated: true, completion: nil) }
参考にさせていただいたサイト
いろんなサイトを巡って力の尽くす限り試しました。
以下参考にしたサイトです
https://forums.developer.apple.com/thread/126195
https://forums.developer.apple.com/thread/85814
https://teratail.com/questions/45218
https://stackoverflow.com/questions/49477674/how-to-disable-uialertaction-depending-on-uitextfield
補足情報(FW/ツールのバージョンなど)
Xcode11.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/14 06:26