UIImageView 没有出现在自定义 UITableViewCell 中

Posted

技术标签:

【中文标题】UIImageView 没有出现在自定义 UITableViewCell 中【英文标题】:UIImageView does not appear in custom UITableViewCell 【发布时间】:2011-12-28 16:35:04 【问题描述】:

我需要在表格视图中每行显示三个图像。我创建了一个自定义 tableviewcell,其中包含三个图像视图。其 cellForRowAtIndexPath: 方法中的 tableView 将图像的名称提供给单元格,并且单元格应在一行中并排加载它们。但是图像没有出现在 tableView 中。我不确定为什么它不起作用。请帮忙!

代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

     static NSString *CellIdentifier = @"Cell";
    customCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    
    NSString *imageForCell = [arrayImages objectAtIndex:(indexPath.row*3)];
    cell.firstImageName = imageForCell;
    imageForCell = [arrayImages objectAtIndex:(indexPath.row*3)+1];
    cell.secondImageName = imageForCell;
    cell.thirdImageName = [arrayImages objectAtIndex:(indexPath.row*3)+2];
    return cell;

customCell.m:

#import "customCell.h"

@implementation customCell
@synthesize firstImageView, secondImageView,thirdImageView, firstImageName, secondImageName, thirdImageName;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        // Initialization code

        //Make the Rects for the images
       CGRect rectForFirstImage = CGRectMake(10, 0, 90, 140);
        CGRect rectForSecondImage = CGRectMake(110, 0, 90, 140);
        CGRect rectForThirdImage = CGRectMake(210, 0, 90, 140);

        //create the Image views with the Rects
        firstImageView.frame = rectForFirstImage;
        secondImageView.frame = rectForSecondImage;
        thirdImageView.frame = rectForThirdImage;


        //set the images
        [firstImageView setImage:[UIImage imageNamed:firstImageName]];//tried setting the image this way also
      //  firstImageView.image = [UIImage imageNamed:firstImageName];
        secondImageView.image = [UIImage imageNamed:secondImageName];
        thirdImageView.image = [UIImage imageNamed:thirdImageName];

        // set the content mode for the image views to fit in the images
        firstImageView.contentMode = UIViewContentModeScaleAspectFit;
        secondImageView.contentMode = UIViewContentModeScaleAspectFit;
    thirdImageView.contentMode = UIViewContentModeScaleAspectFit;


return self;


-(void) layoutSubviews
    [super layoutSubviews];
    self.opaque = NO;

    [self.contentView addSubview:firstImageView];
    [self.contentView addSubview:self.secondImageView];
    [self.contentView addSubview:self.thirdImageView];


@end

【问题讨论】:

找出这段代码不起作用的原因。图像视图中的图像将在 TableView 的 cellForRowAtIndexPath 方法中设置。所以我创建图像并将其分配给 cellForRowAtIndexPath 中的 imageViews 并将其发送到单元格。这在每个单元格显示一个图像的范围内有效。我不确定为什么它不显示其他图像。 【参考方案1】:

我为您的任务使用了以下代码。我使用 SDWebimage 分配图像。您也可以在没有 SDWebimage 的情况下使用。它的工作试试这个

if(indexPath.section==0)

    if ([self.array count]>0)
    
        if ([self.array count]>indexPath.row*3)
        
            LooksObject *looksObjectRef1 = [self.array objectAtIndex:indexPath.row*3];

            [cell.firstImage setImageWithURL:[NSURL URLWithString:looksObjectRef1.looksThumbImage] placeholderImage:[UIImage imageNamed:@"no_image.png"]];



        

        if ([self.array count]>(indexPath.row*3)+1)
        
            LooksObject *looksObjectRef2 = [self.array objectAtIndex:(indexPath.row*3)+1];

            [cell.secondImage setImageWithURL:[NSURL URLWithString:looksObjectRef2.looksThumbImage] placeholderImage:[UIImage imageNamed:@"image.png"]];

        

        if ([self.array count]>(indexPath.row*3)+2)
        
            LooksObject *looksObjectRef3 = [self.array objectAtIndex:(indexPath.row*3)+2];

            [cell.thirdImage setImageWithURL:[NSURL URLWithString:looksObjectRef3.looksThumbImage] placeholderImage:[UIImage imageNamed:@"image.png"]];

        

    

【讨论】:

以上是关于UIImageView 没有出现在自定义 UITableViewCell 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 UITableViewCell 中创建 UIImageVIew? (迅速)

在自定义 View 类中使用 UIImageView 的正确方法

选择时在自定义 UITableViewCell 中调暗 UIImageView

在自定义UITableViewCell中保持UIImageView的宽高比

在自定义 UITableViewCell 中调整 UIImageView 的大小会产生不一致的结果

UIButton 在自定义 UITableviewCell 中没有响应