我是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并进入一个简单的数组。
谢谢。
答案 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}}属性,因为这适用于NSIndexPath
。 NSIndexPath 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]];
}