ios - UICollectionView 滚动问题

标签 ios objective-c uicollectionview

我正在使用 Collection View 来显示“卡片”。当用户单击其中一张卡片时, View 会随着翻转动画而改变(到另一“边”——通过 didSelectItemAtIndexPath 中调用的函数)。如果用户触摸这些卡片中的另一张,他们可以单击另一张,旧卡片将翻转回旧 View ,新卡片将翻转到新 View 。或者,他们可以再次单击原始卡片并将其翻转回来。

问题

这很好用,除了以下事实:当滚动到 ScrollView 中的卡片时,其他卡片似乎被翻转了。例如,我翻转 Collection View 中的第一张卡片(索引:0)。这很好。我向下滚动,索引 9 的单元格出现翻转。

我尝试过的

我环顾四周,虽然我可以看到很多与 UICollectionView 和滚动有关的问题,但我无法弄清楚哪些相同,哪些不同。我还使用 NSLog 来确定随机翻转的 View 卡是否已通过程序选择和翻转,但它们没有。他们只是看起来是。

我真的很想知道这个。有人有什么想法吗?是因为我创建细胞的方式吗? 在我的 viewDidLoad 中,我正在使用:(其中 cellImage 是我为单元格自定义的类)

[self.collectionView registerClass:[cellImage class] forCellWithReuseIdentifier:@"MY_CELL"];

在我的 cellForItemAtIndexPath 中:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; {
cellImage *cell = [cv dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.item]];
[cell.label addSubview:cell.imageView];
cell.label.backgroundColor = [UIColor whiteColor];
cell.label.layer.borderColor =  [UIColor grayColor].CGColor;
cell.label.layer.borderWidth  = 1.0f;

return cell;
}

有人有什么想法吗?如果您需要更多代码,请告诉我,谢谢!

最佳答案

在配置可重用单元格 (cellForItemAtIndexPath) 的方法中,您必须显式设置这两种状态。否则回收的单元将不会自行更新。

image = isFlipped ? backImage : cardImage;

您应该有一个数据模型,可以可靠地返回阵列中任何卡片的当前翻转状态。

关于ios - UICollectionView 滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704409/

相关文章:

objective-c - 获取 Cocoa 中 NSMatrix 中 NSCell 的列和行

ios - 在核心数据关系中添加子对象 - Swift4

ios - UICollectionView 单元格个体高度

ios - 使用另一个 swift 文件中的 CollectionView 方法

ios - 雅虎身份验证和获取配置文件详细信息 iOS

ios - 我如何在 webrtc ios 中压缩视频文件?

objective-c - iOS 5 和 UIViewController presentViewController - 现在是否可以在不破解的情况下更改模态 Controller 的大小?

ios - UIPageViewController Transition Style = Page curl 工作正常,Scroll 抛出索引越界?

ios - 为什么我不能在动态输入 block 中使用 BOOL 变量?

ios - 在 Objective-C 中填充 NSMutableArray 时出现问题