在馆藏视图中看不到Uilabel

时间:2016-05-14 15:09:50

标签: ios uicollectionview

我使用以下代码将图片从网址加载到集合视图

-

 (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"Cell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];



    UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
    UILabel *recipeLabel = (UILabel *)[cell viewWithTag:200];


    if ([ImageArray count] >0){
    for(int i = 0; i < [ImageArray count]; i++)
    {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) {
            NSData *data0 = [NSData dataWithContentsOfURL: [NSURL URLWithString:[ImageArray objectAtIndex:indexPath.row]]];
            UIImage *image = [UIImage imageWithData: data0];

            dispatch_sync(dispatch_get_main_queue(), ^(void) {
                recipeImageView.image = image;
            });
        });
    }
    }else{
        UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, cell.bounds.size.width, 40)];
        title.text = @"No image record found";
        title.tag = 200;
        [title setHidden:true];
        [cell.contentView addSubview:title];
    }

    [spinnerShow stopAnimating];

    cell.layer.shouldRasterize = YES;
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale;

    return cell;
}

如果ImageArray有一些url,if循环将被执行。否则,将执行else循环,它将显示一个标签,表示未找到图像记录。但是uilabel没有变得可见

1 个答案:

答案 0 :(得分:0)

为什么在cellForItemAtIndexPath中使用for循环?为UICollectionView中的每个项调用此方法。在其他情况下,添加日志或断点并检查它是否正在那里或总是进入条件。确保您是否需要检查数组计数或是否要检查URL上是否存在图像?