在这些方面真正发生了什么
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MenuCollectionViewCell *cell = (MenuCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier
forIndexPath:indexPath];
特别是在细胞系上?
据我了解,当我滚动集合视图,显示不可见的新单元格,结果隐藏了可见的单元格时,iOS会重复使用单元格中那些离开屏幕的单元格来绘制新单元格,对吗?
问题是:如果我基于indexPath自定义特定单元格,我将重复该自定义。例如,如果我将一个单元格的标签设置为红色,那么只要我滚动集合视图并且单元格已经出列并重复使用,我就会有很多带有红色标签的单元格。
如何防止这种情况发生?
答案 0 :(得分:3)
覆盖[UICollectionViewCell prepareForReuse]
并重置方法中的所有自定义项。
答案 1 :(得分:1)
您可以在cellForRowAtIndexPath
中清除它们,然后为新的indexPath配置单元格,或者如果您有UITableViewCell的自定义子类,则覆盖prepareForReuse
方法并在那里清除它。请参阅Apple doc。
修改强> 对不起,您正在使用集合视图而不是表视图,但同样适用。
答案 2 :(得分:0)
覆盖prepareForReuse
以重置资源,当单元格滚出框架时将调用它
不要忘记呼叫超级方法