如何检查 UICollectionView 有图像

Posted

技术标签:

【中文标题】如何检查 UICollectionView 有图像【英文标题】:How to check UICollectionView has image 【发布时间】:2019-03-10 04:52:08 【问题描述】:

我有 4 个 UICollectionViewCell,我想让前 2 个单元格在其中强制包含图像。示例代码如下。下面是一个用例:

如果我单击每个单元格将打开相机,则有 4 个 UICollectionViewCell,我们可以拍照或从图库中选择图像。如何知道前 2 个单元格必须有图像。寻找条件来检查这个逻辑。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

    Image *image = (Image *)self.defect.imageSet[indexPath.item];
    ADRPhotoCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([ADRPhotoCollectionViewCell class]) forIndexPath:indexPath];
    cell.image = image.thumbnailImage ? image.thumbnailImage : nil;
    cell.photoType = [self.defect defectPhotoTypeForIndex:indexPath];
    return cell;


#pragma mark - UICollectionViewDelegate

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 

   Image *image = self.defect.imageSet[indexPath.item];

    if (self.selectedImage != image) 

       [self updateAnnotatedImage];
        self.selectedImage = image;
       [self.jotController clearAll];
       [self updateUserInterface];

    if (image.thumbnailImage) 
        [self transitionImage:YES];
     else 
        self.imageView.image = nil;
        [self showCameraPicker];
    

 else if (!image.thumbnailImage) 
      //clicked the + to add a new image
      [self showCameraPicker];
  

【问题讨论】:

你能解释一下“如何知道前 2 个单元格必须有图像”吗?你的意思是,你想检查前 2 个单元格是否已经有图像? 是的,我想检查 cellForItemAtIndexPath 0 和 1 是否有图像。 【参考方案1】:

您可以通过这种方式检查UIImageView中是否有图片:

-(BOOL) checkImages 
    for (int i=0, i<2 , i++) 
        NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
        ADRPhotoCollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
        if (cell.imageView.image == nil || CGSizeEqualToSize(cell.imageView.image.size, CGSizeZero)) 
            //there isn't any image or the image is empty
            return NO;
        
    
    return YES;

【讨论】:

还是没有。我想检查 cellForItemAtIndexPath 0 和 1 是否有图像。 这在委托方法之外不会有collectionView对象 你可以为你的collectionView设置出口,并在你课堂上的任何地方访问它 现在它总是返回 1。 即使 imageView 有图像?

以上是关于如何检查 UICollectionView 有图像的主要内容,如果未能解决你的问题,请参考以下文章

在 UICollectionView 中显示图像 - 如何实现图像之间的固定垂直间距?

检查 indexPath 处的单元格是不是在屏幕 UICollectionView 上可见

如何在 UICollectionview 中显示前 9 张图像?

如何使用 Alamofire Swift 4 将图像填充到 UICollectionView

如何将完整的 uicollectionview 打印到图像或 pdf

如何在滚动swift3时在UICollectionView中隐藏第0行的锁定图像