我正在使用 UICollectionView 开发纸牌游戏。我覆盖了 UICollectionViewCell 的 draw() 函数以在加载单元格时排列我的图像。每个新游戏,我都会更改游戏中的卡片数量。所以细胞的数量和大小会发生变化。由于我使用的第三方库,我必须在 viewWillAppear() 方法中对 UICollectionView 执行所有操作。我的问题是如何重置之前在 UICollectionView 上完成的所有工作。我想在每场比赛中清除 UICollectionView,而无需再次加载 UIViewController。想在 viewWillAppear() 方法中完成。我想清除 UICollectionView,因为如果在新游戏中没有清除 UICollectionView,我的图像会重叠。
注意:我像下面这样从 UICollectionView 中删除了所有 subview ,但它没有用
let subViews = gameCollectionView.subviews
if subViews != nil {
for view in subViews {
view.removeFromSuperview()
}
}
最佳答案
清除集合就是清除它的数据源数组,如
arr = []
gameCollectionView.reloadData()
如果您需要清除单元格,请在 cellForRowAt
中执行此操作
let cell = ///
cell.contentView.subviews//// clear here
或覆盖
override func prepareForReuse() {
super.prepareForReuse()
// clear any subview here
}
如果您在每次运行 cellForRowAt
时都正确地为集合单元格的所有属性分配值而不添加 subview ,那么您将没有重叠
关于ios - 如何在 Swift 中重置 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188027/