2014-10-09 35 views
0

什么是真正发生在这些线路上不是唯一的细胞cellForItemAtIndexPath:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    MenuCollectionViewCell *cell = (MenuCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier 
                            forIndexPath:indexPath]; 

专门的细胞系?

据我所知,当我滚动显示不可见的新单元格的集合视图并隐藏可见的单元格时,iOS将重用单元格出现在屏幕外的单元格以绘制新单元格, ?

问题是这样的:如果我根据indexPath自定义一个特定的单元格,我将有几次重复的定制。例如,如果我将一个单元格的标签设置为红色,那么只要我滚动收集视图并将该单元格出列并重用,就会有很多带有红色标签的单元格。

我该如何防止这种情况发生?

回答

3

重写[UICollectionViewCell prepareForReuse]并重置该方法中的所有自定义设置。

+0

只是乙R I L L I A NT·!!!!!!!!!!! – SpaceDog 2014-10-09 14:42:20

1

您可以在cellForRowAtIndexPath中清除它们,在为新的indexPath配置单元格之前,或者如果您有UITableViewCell的自定义子类,请覆盖prepareForReuse方法并在此处将其清除。请参阅Apple doc

编辑 对不起,你正在使用集合视图而不是表视图,但同样适用。

0

prepareForReuse覆盖重置资源,这将是当调用滚动细胞出帧

的不要忘记调用super方法