我想获取 UICollectionView 中的所有项目。
我编写了下面的代码,但它没有按照我想要的方式工作。我的CollectionView中有6个项目,但它只显示了4个项目。我应该如何修改我的母鹿?
for(NSIndexPath *indexPath in self.viewCollection.indexPathsForVisibleItems) {
// for(imgCount in self.viewCollection.numberOfSections) {
// NSIndexPath *indexPath = self.viewCollection.indexPathsForVisibleItems;
// Get selected cell
MYCell* cell = (MYCell*) [_viewCollection cellForItemAtIndexPath:indexPath];
if(cell.checked == YES) {
imgCount = imgCount + 1;
NSString *imgName = [directoryContent objectAtIndex:indexPath.item];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imgName]];
NSData *imgFile = [NSData dataWithContentsOfFile:filePath];
if(imgCount == 1) {
[IMGDATA_grid appendString:[imgFile base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength]];
}
else {
[IMGDATA_grid appendString:@","];
mTempData = [imgFile base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
[IMGDATA_grid appendString:mTempData];
}
}
}
答案 0 :(得分:0)
CollectionViews(和TableViews等)的工作方式是,您从代码中的结构传递数据,很可能是NSArray或NSMutableArray。这是您保存数据的地方。
将数据放入数组=>让你的CollectionView访问数据=>显示用户界面
如果您需要访问代码中其他位置的数据,请直接参考数据结构,而不是UI元素本身,特别是因为系统可以删除单元格以节省内存。
所以说你想知道第47行的UICollectionViewCell的标题是什么,你不需要去Cell 47并询问它的标题,而是直接引用你的数据结构,如:
Array
(
[0] => 17
[1] => 16
)
答案 1 :(得分:0)
您好我认为这是关于您的集合视图算法。我的意思是在使用 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath方法时,您应该保留您在单元格,数组或模型中使用的数据或类似的东西。可以显示的4个项目是在viewDidLoad之后绘制的项目,没有任何滚动操作。如果在集合视图中使用具有相同偏移量的3个单元格,则可以毫无问题地获取所有项目。关于我的意思的微小代码
NSArray *array = [NSArray arrayWithObjects:@"String1",@"String2",@"String3","String4",@"String5",@"String6",nil];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
CustomCollectionViewCell *cell = (CustomCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCollectionViewCell" forIndexPath:indexPath];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCollectionViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
[cell setupCellWithString:[array objectAtIndex:indexPath.row]];
return cell;}
选择集合视图中的任何项目
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSString *strInArray = [array objectAtIndex:indexPath.row];}
我希望我能正确理解你的问题。祝好运。顺便说一下,collectionview.indexPathsForVisibleItems表示在集合视图上绘制和显示的项目。