Swift3にて、ボタンを押したらラベルに表示されるテキストが切り替わるように設定しているのですが、最初に表示されてる状態(viewDidLoar内にて条件分岐させて詳細設定をした)の設定で表示させたいのですが、表示切り替えのボタンを押したらその設定は無効となってテキストが表示されてしまいます。
一度初期画面に表示された設定を保持したままで、テキスト内容だけ変更するにはどうすればよいでしょうか?
下記のサンプルコードの状態ですと、
ボタンメソッド内に再度詳細を設定し直す方法しか思いつかないのですが、
他にいい方法はないでしょうか?
宜しくお願い致します。
■ サンプルコード Swift3 xcode8
Swift3
1class FirstViewController: UIViewController, UIScrollViewDelegate { 2 3 var dayArray:[String?] = [] 4 5 var labels = [UILabel]() 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 dayArray = csvArray[12].components(separatedBy: ";") 11 12 (略) 13 14 // ラベルを生成 15 for index in 0..<31 { 16 let label = UILabel() 17 label.font = UIFont.systemFont(ofSize: 12) 18 label.backgroundColor = rgbaPaleGray 19 label.frame = CGRect(x: 40, y: 100 + (index * 30), width: 315, height: 30) 20 label.numberOfLines = 0 21 labels.append(label) 22 scrollView.addSubview(label) 23 } 24 25 // ラベルにテキストをセット 26 labels[0].text = dayArray[4] 27 labels[1].text = dayArray[8] 28 (略) 29 labels[30].text = dayArray[124] 30 31 32 // ■が含まれていれば、 ■を削除してラベルの色を変える 33 for i in labels { 34 if let range = i.text?.range(of: "■") { 35 i.text?.removeSubrange(range) 36 i.backgroundColor = rgbaMediumGray 37 } 38 } 39 40 41 // ラベルを改行させてラベルの高さを変更する 42 var maxY: CGFloat = 100 43 for c in labels { 44 c.frame.origin.y = maxY 45 if c.text?.characters.count > 25 { 46 c.frame.size.height += 20 47 c.frame = CGRect(x: 40, y: maxY, width: 315, height: c.frame.size.height) 48 49 // 行間のスペースを調整 50 let LineSpaceStyle = NSMutableParagraphStyle() 51 LineSpaceStyle.lineSpacing = 5.0 52 let lineSpaceAttr = [NSParagraphStyleAttributeName: LineSpaceStyle] 53 c.attributedText = NSMutableAttributedString(string: c.text!,attributes: lineSpaceAttr) 54 } 55 maxY = c.frame.maxY 56 } 57 58 // Button0生成 59 let button0 = UIButton() 60 button0.frame = labels[0].frame 61 button0.addTarget(self, action: #selector(button0Event(sender:)), for: .touchUpInside) 62 scrollView.addSubview(button0) 63 ・ 64 ・ 65 (略) 66 ・ 67 ・ 68 69 } //viewDidLoadを閉じる 70 71 72 73 // ボタン0が押された時に呼ばれるメソッド 74 func button0Event(sender: UIButton) { 75 if labels[0].text == dayArray[4] { 76 labels[0].text = dayArray[6] 77 } else { 78 labels[0].text = dayArray[4] 79 } 80 } 81 ・ 82 ・ 83 (略) 84 ・ 85 ・ 86 87}
回答2件
あなたの回答
tips
プレビュー