斯威夫特新来的。我有一个来自viewcontroller的嵌套CollectionView。主viewcontroller有7个collectionviewcell(“Level1Cell”在下面的代码中)。每次单击按钮或触发事件时,我都希望collectionView用新数据重新加载。
func eventHandler() {
// updates data
myCollectionView.reloadData()
}
然后,在调用reload之后,它将在每个嵌套的CollectionViewCell上再次调用reload。
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来更新视图中的数据以及视图控制器中的嵌套视图中的数据?
谢谢!
最佳答案
UIcollectionview
将重用单元格。必须为row-in方法提供所需的数据
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
或者只是清除单元格中以前的数据。
关于ios - Swift-单独的 View 具有共享相同内存的 subview ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45540012/