2017-12-26 7 views
0

私の配列の数に基づいて、いくつかのラベルを作成しています。そしてそれはうまく動作します。しかし、ユーザーのやりとりが起こった後、ラベルの色を変更したいと思います。ここでiOS/Swift 4:プログラムで作成したラベルから色を変更する

が私のコードです:

-The配列は次のようなものになります。

for label in vids[x][1] { 
    let label = UILabel() 
    label.backgroundColor = UIColor.green 
} 

:ユーザー-after

var vids = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]] 

for label in vids[x][1] { 
     let label = UILabel() 
     label.translatesAutoresizingMaskIntoConstraints = false 
     label.backgroundColor = UIColor.gray 
     label.text = vids[index[j] as! Int]![2] 
     let z = CGFloat(j) 
     self.view.addSubview(label) 
     let horConstraint = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.3+z, constant: 0.0) 
     let verConstraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.75, constant: 0.0) 
     view.addConstraints([horConstraint, verConstraint]) 
} 

をアプリと相互作用し、私はこれをやってみてください。 ..何も起こらない。

答えて

1

あなたは、すなわちこれをやっている場合は、次の

for label in vids[x][1] { 
    let label = UILabel() 
    label.backgroundColor = UIColor.green 
} 

あなたのラベルは変更されません。問題は、let label = UILabel()の行に、UILabelという新しいインスタンスを作成するだけだということです。このラベルはiPhoneの画面に表示されるラベルではありません。

可能性のあるもの解決策sです。

クラスのどこかに、最初のループで作成するUILabelsのストレージを作成します。

var vids = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]] 
var labels: [String: UILabel] = [:] 

for labelString in vids[x][1] { 
     let label = UILabel() 
     labels[labelString] = label 
     label.translatesAutoresizingMaskIntoConstraints = false 
     label.backgroundColor = UIColor.gray 
     label.text = vids[index[j] as! Int]![2] 
     let z = CGFloat(j) 
     self.view.addSubview(label) 
     let horConstraint = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.3+z, constant: 0.0) 
     let verConstraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.75, constant: 0.0) 
     view.addConstraints([horConstraint, verConstraint]) 
} 

し、後でそれを使用する:

for labelString in vids[x][1] { 
    let label = labels[labelString] // < Here you retrieves a saved label 
    label.backgroundColor = UIColor.green 
} 
+0

は素晴らしい仕事を!すぐにお返事ありがとう! – Raph

+0

素敵な一日を – Vyacheslav

関連する問題