В разделе моего UITableView есть 5 ячеек, три из которых были настроены на развертывание / свертывание для предоставления более подробного представления при выборе. Одна из этих ячеек показывает диаграмму количества маленьких квадратов, которая отображается идеально, пока другая ячейка не будет расширена, например:
Когда ячейка свернута, однако, подпредставления в ячейке отображаются в разных ячейках, в разных разделах, например:
и это:
Чтобы создать подпредставления в ячейке, это мой код в методе cellForRow, который просто использует массив UIViews:
for vote in vote_array {
cell.contentView.addSubview(vote as? UIView ?? UIView.init(frame: CGRect.init(x: 0, y: 0, width: 0, height: 0)))
}
Я попытался удалить все подпредставления, прежде чем добавить их, выполнив это, но это ничего не меняет:
for subview in cell.contentView.subviews {
subview.removeFromSuperview()
}
Редактировать: это внутри оператора switch, но здесь соответствующая ячейка / регистр cellForRow:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.contentView.clipsToBounds = true
cell.clipsToBounds = true
let vote_array = getVoteArray()
for subview in cell.contentView.subviews {
subview.removeFromSuperview()
}
for case let vote as UIView in vote_array {
cell.contentView.addSubview(vote)
}
Редактировать: ядро getVoteArray:
func getVoteArray() -> NSMutableArray {
var i = 0
var x = 20
var y = 4
let blockViews : NSMutableArray = []
for color in blocks {
let block = UIView.init(frame: CGRect.init(x: x, y: y, width: 20, height: 20))
block.backgroundColor = color as? UIColor
blockViews.add(block)
x = x + 24
i = i + 1
if i == num_blocks_per_row { i = 0; y = y + 24; x = 20 }
}
diagramHeight = y + 24
return blockViews
}
Кажется, я не могу понять, почему подпредставления генерируются случайным образом по всему tableView.