使用indexPathsForVisibleItems时只获取NSIndexPath的一部分

时间:2013-02-19 06:54:00

标签: objective-c multidimensional-array xcode4.5

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

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

这会像这样返回NSLog ....

"<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并进入一个简单的数组。

谢谢。

2 个答案:

答案 0 :(得分: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的所有项目值。

如果您从UICollectionView使用此功能,则不应该使用.row的{​​{1}}属性,因为这适用于NSIndexPathNSIndexPath UIKit Additions可供参考。

答案 1 :(得分: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]];
}