gpt4 book ai didi

ios - TableViewCell 中元素的动态数量

转载 作者:行者123 更新时间:2023-11-29 11:54:40 25 4
gpt4 key购买 nike

我需要在垂直方向上一个接一个地添加标签,并且它们的数量是动态的。现在它可以正常使用此代码:

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 时,旧标签被“记住”并且它们覆盖了新标签。新添加的对象放在数组的第一个位置,它们就像一个接一个...也许我的方法不好,但如果您有任何建议,请告诉我。

最佳答案

请记住,单元格是重复使用的,因此无论之前如何准备单元格,它仍然具有所有状态。特别是,它的 View 层次结构(添加的 subview )仍然存在。这样做的原因通常是表格单元格的布局保持不变,只有它的内容需要在 cellForRowAtIndexPath 中重新设置。

首先,您正在使用反模式,这就是您遇到困难的原因。

如果你真的想清除并重新布局单元格,每次都明确地删除所有 subview ,例如:

https://techfuzionwithsam.wordpress.com/2014/12/23/what-is-the-best-way-to-remove-all-subviews-from-parent-viewsuper-view/

不过我怀疑(诚然这不是 CodeReview)您的设计存在缺陷。通常表格单元格不需要随着内部元素的动态计数而增加高度。您可能需要嵌套表格 (!!),每个表格实际上只是一个多行 UITextView,或者由具有自定义节标题 View 的节构成的表格。

关于ios - TableViewCell 中元素的动态数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com