无法在 tableview 单元格中显示解析的 imageView

Posted

技术标签:

【中文标题】无法在 tableview 单元格中显示解析的 imageView【英文标题】:Can't display an imageView from parse in tableview cell 【发布时间】:2014-10-25 11:17:24 【问题描述】:

ios 应用程序运行时,单元格中没有显示任何内容,图像在解析中属于“文件”类型。我不为此使用情节提要,因此无法将 imageView 的类更改为 PFImageView。缺少什么?

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

    static NSString *simpleTableIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    

    // Configure the cell
    PFFile *thumbnail = [object objectForKey:@"logo"];
    PFImageView *thumbnailImageView = (PFImageView*)[cell viewWithTag:100];
    thumbnailImageView.image = [UIImage imageNamed:@"placeholder.png"];
    thumbnailImageView.file = thumbnail;
    [thumbnailImageView loadInBackground];

    cell.textLabel.text = [object objectForKey:@"name"];
    cell.detailTextLabel.textColor=[UIColor lightGrayColor];
    cell.backgroundColor = [UIColor clearColor];

    thumbnailImageView=[[PFImageView alloc] initWithFrame:CGRectMake(9, 9, 30, 30)];
    [thumbnailImageView setBackgroundColor:[UIColor clearColor]];

    [cell.contentView addSubview:thumbnailImageView];

    return cell;

提前致谢!

【问题讨论】:

【参考方案1】:

你真的需要这 3 行吗...

thumbnailImageView=[[PFImageView alloc] initWithFrame:CGRectMake(9, 9, 30, 30)];
[thumbnailImageView setBackgroundColor:[UIColor clearColor]];

[cell.contentView addSubview:thumbnailImageView];

您已经将现有的 ImageView 转换为 PFImageView...

PFImageView *thumbnailImageView = (PFImageView*)[cell viewWithTag:100];

这又应该是表格单元格中的图像视图。 loadInBakground 是否适用于表格单元格?您可能会遇到获取图像的行可能已被另一个图像重用的问题

【讨论】:

是的,让它在单元格中看起来不错。我以前有本地图像,但现在我想使用来自 parse.com 的图像 那么如果你注释掉这 3 行代码会发生什么? 您的 PFFile 设置是否正确,即它实际上是一个 PFFile 是的,我想所以我尝试使用 NSLOG 检查 thumbnail.file url,我可以看到图像的正确 url。我认为您需要在 storybard 中将 imageView 类设置为 PFImageView 之类的...... 尝试创建一个自定义表格单元格,这样您应该能够定义图像类【参考方案2】:

我认为您看不到图像的原因是因为您在后台加载它并在从解析中获取数据之前对其进行设置。你能试试这样的吗:

// Set placeholder to show before image finishes loading
PFImageView *thumbnailImageView = (PFImageView*)[cell viewWithTag:100];
thumbnailImageView.image = [UIImage imageNamed:@"placeholder.png"];

PFFile *thumbnail = [object objectForKey:@"logo"];
[thumbnailImageView setFile:thumbnail];
[thumbnailImageView loadInBackground:^(UIImage *image, NSError *error) 
    if (!error) 
        // Configure your image view in here            
        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(9, 9, 30, 30)];
        [imageView setBackgroundColor:[UIColor clearColor]];     
        [imageView setImage:image];
        [cell.contentView addSubview:imageView];
    
];

尝试这些方法。

【讨论】:

我不太确定你所说的 och 是什么意思,但我只是在 loadInBackground 中设置了一个带有 ImageView 的示例。你可能只做thumbnail.image = image 然后[cell.contentView addSubview:imageView]; 不确定这是否是你在问什么。 哎呀对不起我的意思是和*。不,但我没有名为 image 或 imageView 的变量?但我理解你的例子,但它仍然不起作用!!... 使用内置的self.placeholder怎么样? 您正在加载的图像确定在那里吗?登录NSLog(@"[object objectForKey:@"logo"]: %@",[object objectForKey:@"logo"]);会看到什么? 在单元格中添加一个带有类 PFImageView 的 ImageView 后,使用故事板,标签为 100,一切正常!谢谢:)

以上是关于无法在 tableview 单元格中显示解析的 imageView的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在 TableView 单元格中不可见

在 tableview 单元格中显示图像

ios在tableview单元格中显示/隐藏视图

reloadData后无法单击tableView单元格中的按钮

在tableView中选择多个单元格并将另一个tableView单元格中的选定单元格显示为标签?

两个标签在tableView单元格中垂直对齐自动调整大小