2

私は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]"

数値の2番目の列を取得したいと思います。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からのすべてのアイテム値を表すオブジェクトの配列が得られます。

からこれを使用している場合は、のプロパティをUICollectionView実際に使用しないでください。これは、での使用を目的としているためです。この点に関する参照用のNSIndexPathUIKitAdditions 。.rowNSIndexPathUITableView

于 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 に答える