3

在 UICollectionView 中更改位置后,我一直在尝试将单元格的状态或顺序保存在 UICollectionView 中。当我使用 indexPathsForVisibleItems 时,我得到的索引总是以相同的顺序。它们不反映订单变化。如果我可以在每个 indexPath 处获取对象,我至少可以尝试遍历它们以获得结果顺序。

我使用了这段代码。并发现它返回了[0,0]中indexPaths的刷新状态。排序总是相同的,因为它告诉我哪些单元格中有一些东西,而不是每个单元格中有什么。我只是不知道从哪里开始获取每个单元格中的对象/项目。

NSArray *visible = [self.collectionView indexPathsForVisibleItems];
NSMutableArray *rowsArray = [NSMutableArray arrayWithCapacity:[visible count]];
[visible enumerateObjectsUsingBlock:^(NSIndexPath *indexPath, NSUInteger idx, BOOL *stop) {
    [rowsArray addObject:@(indexPath.item)];

我需要每个位置的项目或对象。如何遍历所有单元格位置以在那里检索项目。我计划使用用于填充 UICollectionView 的数组的计数来循环遍历所有位置并获取存储在那里的对象。只有一个部分,单元格似乎正在存储这样的对象<Slide: 0x7585200>

上面的函数以这种格式返回 NSLogs"<NSIndexPath 0x8490390> 2 indexes [0, 0]"

我需要得到那个位置的东西。

我不熟悉 NSIndexPath 或它的格式。即使只是命令/功能也可以帮助我取出一个对象。谢谢。

(附录)我正在考虑使用类似[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];Not sure what I can store it in。

4

1 回答 1

4

CollectionView 是 UIView 的集合(调用 UICollectionViewCell)。每个单元格都有一个 indexPath (section,row) 表示 collectionView 内容中的布局位置。如果您有 1 个部分,则部分始终 = 0。

visibleCells 表示当时屏幕上可见的所有单元格(在滚动框架或 collectionView 框架中可见)。indexPathsForVisibleItems = 可见单元的 indexPath 数组

cellForItemAtIndexPath 是一种在您想要的任何 indexPath 处获取 collectionViewCell 的方法,通常用于在选择时获取单元格:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
    NSLog(@"%@",cell);
}

从 Apple UICollectionView 视频和示例中了解更多信息: https ://developer.apple.com/library/ios/#samplecode/CollectionView-Simple/Introduction/Intro.html

https://developer.apple.com/videos/wwdc/2012/

于 2013-02-20T19:44:31.227 回答