Swift3にて、複数のラベルの中から特定の文字列が含まれているラベルを探し出し、そのラベルを特定する方法を知りたいです。
<試したこと>
.contains で特定の文字列が含まれているかを、複数あるラベルにそれぞれ同じコードを記述して確認させ、trueの場合の処理をその都度記述するやり方にしています。
できれば、複数のラベルを配列などに入れて、for-in文などで繰り返し処理をし特定できればと思ってます。(UILabelは配列には入れられないのでしょうか?やってみたのですが、エラーがでます。)
もしくは、.contains 以外で、複数あるラベルの中から特定の文字列を含むラベルを見つける方法があれば教えて頂きたいです。
サンプルコード Swift3 xcode8
class ViewController: UIViewController { var qArray:[String] = [] let q1Label = UILabel() let q2Label = UILabel() let q3Label = UILabel() let q4Label = UILabel() let q5Label = UILabel() let q6Label = UILabel() let q7Label = UILabel() let q8Label = UILabel() let q9Label = UILabel() let q10Label = UILabel() override func viewDidLoad() { super.viewDidLoad() // q1Label作成 q1Label.text = qArray[5] q1Label.frame = CGRect(x: 20, y: 230, width: 335, height: 30) q1Label.textColor = UIColor.black q1Label.font = UIFont.systemFont(ofSize: 12) q1Label.backgroundColor = .lightGray view.addSubview(q1Label) // ■の文字が含まれていればラベルの色を変更する if (q1Label.text?.contains("■"))! { q1Label.backgroundColor = .cyan } // ラベルの文字数が22より多ければ改行させる if (q1Label.text?.characters.count)! > 22 { q1Label.numberOfLines = 0 q1Label.sizeToFit() // ラベルの高さをプラスする q1Label.frame.size.height += 21 // ラベルのframeを再設定 q1Label.frame = CGRect(x: 20, y: 230, width: 335, height: q1Label.frame.size.height) } // q2Label作成 let q2Y = q1Label.frame.origin.y + q1Label.frame.size.height q2Label.text = qArray[7] q2Label.frame = CGRect(x: 20, y: q2Y, width: 335, height: 30) q2Label.textColor = UIColor.black q2Label.font = UIFont.systemFont(ofSize: 12) q2Label.backgroundColor = .lightGray view.addSubview(q1Label) // ■の文字が含まれていればラベルの色を変更する if (q2Label.text?.contains("■"))! { q2Label.backgroundColor = .cyan } // ラベルの文字数が22より多ければ改行させる if (q2Label.text?.characters.count)! > 22 { q2Label.numberOfLines = 0 q2Label.sizeToFit() q2Label.frame.size.height += 21 q2Label.frame = CGRect(x: 20, y: q2Y, width: 335, height: q2Label.frame.size.height) } ・ ・ ・ (略) ・ ・ ・ // q10Label作成 let q10Y = q9Label.frame.origin.y + q9Label.frame.size.height q10Label.text = qArray[23] q10Label.frame = CGRect(x: 20, y: q10Y, width: 335, height: 30) q10Label.textColor = UIColor.black q10Label.font = UIFont.systemFont(ofSize: 12) q10Label.backgroundColor = .lightGray view.addSubview(q10Label) if (q10Label.text?.contains("■"))! { q10Label.backgroundColor = .cyan } if (q10Label.text?.characters.count)! > 22 { q10Label.numberOfLines = 0 q10Label.sizeToFit() q10Label.frame.size.height += 21 q10Label.frame = CGRect(x: 20, y: q10Y, width: 335, height: q10Label.frame.size.height) } } } コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/18 07:40
2018/01/18 07:51
2018/01/18 08:42
2018/01/18 08:58
2018/01/18 10:21
2018/01/18 10:30
2018/01/18 13:48
2018/01/18 14:31 編集
2018/01/19 02:18