我需要垂直添加标签并且它们的编号是动态的。现在它可以正常使用此代码:TableViewCell中元素的动态数量
let numUnitsLabel = UILabel(frame: CGRectZero)
numUnitsLabel.text = units
numUnitsLabel.font = UIFont.boldSystemFontOfSize(28)
numUnitsLabel.textColor = UIColor.redColor()
numUnitsLabel.translatesAutoresizingMaskIntoConstraints = false
cell.contentView.addSubview(numUnitsLabel)
let topConstraint = NSLayoutConstraint(item: numUnitsLabel, attribute: .Top, relatedBy: .Equal, toItem: cell.contentView, attribute: .Top, multiplier: 1, constant: 8 * CGFloat(i+1) + CGFloat(i*25) + CGFloat(i*20) - 5)
let rightConstraint = NSLayoutConstraint(item: numUnitsLabel, attribute: .Trailing, relatedBy: .Equal, toItem: cell.contentView, attribute: .Trailing, multiplier: 1, constant: -10)
cell.contentView.addConstraints([topConstraint, rightConstraint])
单元格绘制正常。但是,当我在列表中添加新项目并致电tableView.reloadData
时,旧标签被“记住”并且它们超过了新标签。新添加的对象放在数组中的第一个位置,它们就像一个在另一个...也许我的方法是不好的,但如果你有任何建议,请指教我。
您可以继承tableviewcell并在prepareforreuse方法中删除子视图。 –
好的,但在循环中我有上面的代码,所以基本上我添加标签X次。我subclassed prepareForReuse现在如何删除所有这些? – Slavcho
如果你的标签是在类中定义的,你可以说numUnitsLabel.removeFromSuperview()。如果你想删除单元格中的所有内容: 以查看contentView { view.removeFromSuperview() } –