2

我是 Obj-C 的新手。我一直在使用 UICollectionView 的排序功能。单元格移动后,我正在保存数据。但是 NSIndexPath 信息并不像我预期的那样。我不确定在使用 indexPathsForVisibleItems 时如何仅访问索引的一部分。

NSArray *visible = [self.collectionView indexPathsForVisibleItems];
NSLog(@"These are the visible cells %@", visible);

这会像这样返回 NSLogs....

"<NSIndexPath 0x8a6b7f0> 2 indexes [0, 0]",
"<NSIndexPath 0x8a6d3d0> 2 indexes [0, 2]",
"<NSIndexPath 0x8a6d480> 2 indexes [0, 3]",
"<NSIndexPath 0x889f080> 2 indexes [0, 1]"

我想得到第二列数字。NSIndex 路径中的 0,2,3,1。我确定如果我可以访问这些值,我就可以从单元格中获取信息。是否有特定的约定或转换来获取 0,2,3,1 并转换为一个简单的数组。

谢谢你。

4

2 回答 2

3

你可以做类似...

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

这将为您提供一个对象数组,NSNumber这些对象表示可见项目中 indexPaths 中的所有项目值。

如果您从 a 使用它,UICollectionView则不应真正使用 的.row属性NSIndexPath,因为它旨在与 a 一起使用UITableViewNSIndexPath UIKit Additions以供参考。

于 2013-02-19T07:08:56.067 回答
2
NSMutableArray * array = [NSMutableArray array];
NSArray * arr = [self.collectionView indexPathsForVisibleItems];
for(NSIndexPath * path in arr) {
   [array addObject:[NSNumber numberWithInteger:path.section]];
   //(or)
   [arr addObject:[NSNumber numberWithInteger:path.row]];
}
于 2013-02-19T07:08:00.767 回答