【发布时间】:2019-07-22 14:36:33
【问题描述】:
我在重新加载集合视图时遇到了一个奇怪的情况,在重新加载之前,我从源中删除所有对象,然后在我的集合上调用 reloadData 并且由于某种原因集合正在添加视图但从不删除它们。 (dataSource没有重复数组总是正确的)
当我调用重载时:
viewModel.reloadActivities()
activityCollection.reloadData()
viewModel中的这个方法获取数据并替换数据源使用的数组:
func reloadActivities() {
activities.removeAll()
fetchActivities()
}
这是一个活动单元格:
func configure(with activity: Activity) {
self.displayActivityCell(with: activity)
}
func displayActivityCell(with activity: Activity) {
let background = UIView(frame: CGRect(x: 0, y: 0, width: contentView.frame.width, height: 100))
background.backgroundColor = #colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)
contentView.addSubview(background)
let label = UILabelFactory(text: activity.getMessage()).color(.black).draw()
contentView.addSubview(label)
label.topAnchor == background.topAnchor + 10
label.leadingAnchor == background.leadingAnchor
label.trailingAnchor == background.trailingAnchor
label.translatesAutoresizingMaskIntoConstraints = false
}
但是如果我调用重新加载 X 次,结果如下...
任何提示为什么 reloadData 不“清理”添加的 contentView?
谢谢
【问题讨论】:
-
每次重新加载数据时,都会一遍又一遍地调用 displayActivityCell。将 UIView 实例添加到您的单元格不是一个好地方。因此,在 init 方法中添加您的视图,并在需要时隐藏/显示。
标签: swift collections view