Reputation: 83
I'm trying to make multiple UIImageView
s in a UICollectionViewCell
so I wrote this code but nothing appends to lines
apparently.
class chartsCell: UICollectionViewCell {
var lines = [UIImageView]()
var chartValueCount = Int()
override func prepareForReuse() {
super.prepareForReuse()
lines.removeAll()
chartValueCount = 0
}
override init(frame: CGRect) {
super.init(frame: frame)
for i in 0 ..< chartValueCount {
let line = UIImageView(frame: CGRect(x: frame.width * CGFloat(i + 1) / CGFloat(chartValueCount + 1) - (10 * CGFloat(i + 1)), y: 0, width: 20, height: frame.height))
line.backgroundColor = UIColor.blue
line.layer.masksToBounds = true
line.layer.cornerRadius = 10
lines.append(line)
contentView.addSubview(lines[i])
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
I change chartValueCount
here:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "chartsCell", for: indexPath) as! chartsCell
cell.chartValueCount = chartValueCount[indexPath.row]
return cell
}
There are three values in chartValueCount
array and as I print cell.lines
it prints three []
.
Nothing shows up in the CollectionView because lines
is empty. How do I fill it properly?
Upvotes: 1
Views: 51
Reputation: 1064
class chartsCell: UICollectionViewCell {
var lines = [UIImageView]()
var chartValueCount:Int{
didSet{
for i in 0 ..< chartValueCount {
let line = UIImageView(frame: CGRect(x: frame.width * CGFloat(i + 1) / CGFloat(chartValueCount + 1) - (10 * CGFloat(i + 1)), y: 0, width: 20, height: frame.height))
line.backgroundColor = UIColor.blue
line.layer.masksToBounds = true
line.layer.cornerRadius = 10
lines.append(line)
contentView.addSubview(lines[i])
}
}
}
override func prepareForReuse() {
super.prepareForReuse()
lines.removeAll()
chartValueCount = 0
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Upvotes: 1