func eventHandler() {
// updates data
myCollectionView.reloadData()
}
然后,在调用reload之后,它将在每个嵌套的CollectionViewCell上再次调用重新加载。
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Level1Cell", for: indexPath) as! Level1Cell
cell.appsCollectionView.reloadData()
return cell
}
问题是,假设我想,对于第一个单元格,将特定行设置为一些文本。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if(self.index == 0 && indexPath.row == 30){
rightCell.textLabel.text = "asdasd"
}
第四个“Level1Cell”单元格的某个标签也设置在第30行,但不是第二行和第三行。在单步执行调试器之后,我意识到重新加载后,第四个单元“Level1Cell”被设置为与第一个单元具有相同的内存地址(为什么重载执行此操作 - 不应该为其分配新内存每个“Level1Cell”? - 我怎么能绕过这个?另外,我是否应该使用reload来更新视图控制器中视图和嵌套视图中的数据?
谢谢!
答案 0 :(得分:0)
UIcollectionview
将重复使用单元格。您必须为方法
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
或者只是清除单元格中的先前数据。