問題の概要
29個のtextFieldを持つ画面の記入事項を一発で削除して新しい状態にしたいと思いArrayを使いボタンにタブを振る方法をいろいろ試しましたが失敗しました。現在は 29 x 2 行のコードを書いて目的は達成していますが、コード的にすっきりしたいと思いますのでヒントかこれに近いサンプルコードが載っているURLを教えてください。また、アプリを起動した時の状態にする簡単な方法があればそれも教えてください。現在は20個あるImageに最初のイメージを読ませることで対処しています。
なお、この29個のtextFieldのいずれかでキーボードがせり上がっているのを、ボタンひとつでキーボードを下げるコードは1行のコードで実現しましたのでAll Clearも簡単なコードがあるのかなと思い質問をする次第です。
対象の画面スクリーンショット
現在のコード
////////All Clearの処理 @IBAction func allClear(_ sender: Any) { //アレイを使ったが失敗し→すべて細かくコードを書いた // textFieldArray = [textRouteTitle01Main, textEkimeiDep01DepCell01, textTimeDep01DepCell01,textEkimeiArr01DepCell01, textTimeArr01DepCell01, textEkimeiDep01DepCell02, textTimeDep01DepCell02,textEkimeiArr01DepCell02, textTimeArr01DepCell02, // 略 略 略] // //すべて細かく書いたコード //キーボードを上げて編集可能にする textRouteTitle01Main.isUserInteractionEnabled = true textEkimeiDep01DepCell01.isUserInteractionEnabled = true textTimeDep01DepCell01.isUserInteractionEnabled = true textEkimeiArr01DepCell01.isUserInteractionEnabled = true // 略 略 略 textTimeArr01DepCell06.isUserInteractionEnabled = true //textFieldの中を空にする textRouteTitle01Main.text = "" textEkimeiDep01DepCell01.text = "" // 略 略 略 textTimeArr01DepCell06.text = "" //アプリを起動した時に表示されるイメージを読み込むコード imageTransImage01DepCell01.image = UIImage(named: "KoutsuShudanNone") // 略 略 略 imageLockDep01DepCell01.image = UIImage(named: "KagiOpen") imageLockArr01DepCell01.image = UIImage(named: "KagiOpen") // 略 略 略 imageLockArr01DepCell06.image = UIImage(named: "KagiOpen") // 略 略 略 imageLockKaijou01MoyooshiDepCell.image = UIImage(named: "KagiOpen") imageLockStart01MoyooshiDepCell.image = UIImage(named: "KagiOpen") }
キーボードを下げるコード
////キーボードを下げるボタンで全てのtextFieldのキーボードを下げる ////ボタンを押した時のボタンの色を青にする @IBAction func downKeyboardBefore(_ sender: Any) { buttonKeyboard01Main.backgroundColor = UIColor.blue } @IBAction func downKeyboard (_ sender: Any) { //ボタンをタップした時にどこのtextFieldでのキーボードも下げる(このコードは偶然見つけた) self.view.endEditing(true) //元の色に戻す(薄青色) buttonKeyboard01Main.backgroundColor = UIColor(red: 118/255, green: 214/255, blue: 255/255, alpha: 1) }
ご参考事項
環境は下記のとおりです。
MacBook Pro (15-inch, 2016)
High Sierra OS10.13.6
Xcode Version 9.4 (9F1027a)Swift4
よろしくお願いします。
最終的に全てのtextFieldを編集可能にしてイメージは最初のイメージにするコード
fuzzballさんにArrayを使ってtextFieldをすべて編集可能にする方法を教わった手法を使って全てのイメージもアプリを開いた時に表示されるようにしました。その一連のコードを下記に掲載します。
////////All Clearの処理 @IBAction func allClearBefore(_ sender: Any) { //ボタンを押した時の色にピンク色を設定 allClear.backgroundColor = UIColor.magenta } @IBAction func allClear(_ sender: Any) { //全てのtextFieldを編集可能にするコード textFieldArray = [textRouteTitle01Main, textEkimeiDep01DepCell01, textTimeDep01DepCell01, // 略 略] for textField in textFieldArray { textField.isUserInteractionEnabled = true textField.text = "" } //全ての乗り物画像を最初の画像にするコード imageTransArray = [imageTransImage01DepCell01, imageTransImage01DepCell02, // 略 略 imageTransImage01DepCell06] for imageView in imageTransArray { imageView?.image = UIImage(named: "KoutsuShudanNone") } imageLockArray = [imageLockDep01DepCell01, imageLockArr01DepCell01, imageLockDep01DepCell02, // 略 略 imageLockKaijou01MoyooshiDepCell, imageLockStart01MoyooshiDepCell] for imageView in imageLockArray { imageView?.image = UIImage(named: "KagiOpen") } //All Clearボタンの色を元の色に戻す(薄紫色) allClear.backgroundColor = UIColor(red: 233/255, green: 190/255, blue: 255/255, alpha: 1) } ////キーボードを下げるボタンで全てのtextFieldのキーボードを下げる ////ボタンを押した時のボタンの色を青にする @IBAction func downKeyboardBefore(_ sender: Any) { buttonKeyboard01Main.backgroundColor = UIColor.blue } @IBAction func downKeyboard (_ sender: Any) { //ボタンをタップした時にどこのtextFieldでのキーボードも下げる(このコードは偶然見つけた) self.view.endEditing(true) //元の色に戻す(薄青色) buttonKeyboard01Main.backgroundColor = UIColor(red: 118/255, green: 214/255, blue: 255/255, alpha: 1) }
回答1件
あなたの回答
tips
プレビュー