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

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

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

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

Q&A

解決済

1回答

1656閲覧

複数のtextFieldをボタンひとつでAll Clearする方法

Tomzy

総合スコア104

Swift

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

0グッド

0クリップ

投稿2018/11/05 08:40

編集2018/11/06 02:49

問題の概要

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) }

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

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

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

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

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

fuzzball

2018/11/05 08:50

「失敗しました」ではなく、どう失敗したのかを書いて下さい。
Tomzy

2018/11/05 09:16

ごめんなさい。余りにもいじり回して、自分でもわからなくなっていました。ただ、質問にも書いたのですが、キーボードを下げるコードが一発で成功したものですからAll Clearもあるに違いないと思って質問をした次第です。やはりあるのですね。ありがとうございました。
guest

回答1

0

ベストアンサー

全てのTextFieldで共通なプロパティについては、下記のような単純なループで設定できると思いますが?

swift

1for textField in textFieldArray { 2 textField.isUserInteractionEnabled = true 3 textField.text = "" 4 : 5}

投稿2018/11/05 08:52

fuzzball

総合スコア16731

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

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

Tomzy

2018/11/05 09:11

消えました。下記のコードを実装したら一発で消えました。ありがとうございました。 ////////All Clearの処理 @IBAction func allClearBefore(_ sender: Any) { //ボタンを押した時の色にピンク色を設定 allClear.backgroundColor = UIColor.magenta } @IBAction func allClear(_ sender: Any) { textFieldArray = [textRouteTitle01Main, textEkimeiDep01DepCell01, textTimeDep01DepCell01, // 略 略] for textField in textFieldArray { textField.isUserInteractionEnabled = true textField.text = "" //All Clearボタンの色を元の色に戻す(薄紫色) allClear.backgroundColor = UIColor(red: 233/255, green: 190/255, blue: 255/255, alpha: 1) }
Tomzy

2018/11/06 02:53

Arrayを使ってtextFieldをすべて編集可能にする方法をfuzzballさんに教わりました。その手法を使って全てのイメージもアプリを開いた時に表示されるようにしました。その一連のコードを質問の末尾に掲載しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問