【发布时间】:2019-12-09 17:25:17
【问题描述】:
我有一个 TableView,里面有一个 CollectionView。 所以每个 Table 单元格都是 CollectionView 的代表。
问题是集合视图在主线程上重新加载,并且 UITableView 单元被重用。 这会导致 collectionView 单元格简要地显示先前单元格的标签,然后淡化更改。 当 tableView 最初通过返回单元格时,如何隐藏这些标签?
这个问题发生在collection.reload() 是在UITableView 的返回单元格中的行单元格之后应用的。
这是代码示例。
- UITableViewCell 代码
let collectionDatasource = CollectionDataSource()
func configureCell(_ object: CustomClass) {
//Configure Object for tableView
self.presentedObject = object
self.nameLabel.text = object.name
//Set object and items on collection datasource
DispatchQueue.main.async {
let collectionItems = object.collectionItems ?? []
self.collectionDatasource.object = object
self.collectionDatasource.items = collectionItems
}
}
class CollectionDataSource: NSObject {
private var collectionView: UICollectionView?
var items: [CustomItem] = [] {
didSet {
DispatchQueue.main.async {
let changes = [CustomItem].changes(from: oldValue, to: self.items, identifiedBy: ==, comparedBy: <)
self.collectionView?.apply(changes: changes)
}
}
}
}
【问题讨论】:
标签: ios swift uitableview uicollectionview