UIImageView 在 UITableViewCell 中不起作用

Posted

技术标签:

【中文标题】UIImageView 在 UITableViewCell 中不起作用【英文标题】:UIImageView not working in UITableViewCell 【发布时间】:2011-11-16 23:10:42 【问题描述】:

我正在使用此代码将图像加载到我的 UITableView 中。

但是什么都没有加载,有什么想法吗?当我 NSLog 时,链接是正确的。

NSString *temp = [appointmentDictionaryTemp objectForKey:@"patient_small_photo_url"]; 
NSData * imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:temp]];
UIImage * image = [UIImage imageWithData:imageData];
UIImageView * myImageView = [[UIImageView alloc] initWithImage:image];
cell.patientImage = myImageView; 

更新:

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

    static NSString *CellIdentifier = @"appointmentCell";

    AppointmentTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    NSDictionary *appointmentDictionaryTemp = [self.appointmentArray objectAtIndex:indexPath.row];
    cell.patientNameLabel.text = [appointmentDictionaryTemp objectForKey:@"patient"];
    cell.appointmentTimeLabel.text = [appointmentDictionaryTemp objectForKey:@"scheduled_time"];

    NSString *urlString = [[appointmentDictionaryTemp objectForKey:@"patient_small_photo_url"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSData * imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
    UIImage * image = [UIImage imageWithData:imageData];
    cell.patientImage.image = image; 

    return cell;

【问题讨论】:

您能否查看请求的响应,如果返回,您可能无法获取图像数据。 这个问题有很多代码,但我错过了关键部分:什么是'cell'类,它的'patientInage'是什么 猜测单元格为 Nil。编辑:没有看到它已经工作了 【参考方案1】:

您是否尝试过:

cell.patientImage.image = image;

当然你不需要创建myImageView

【讨论】:

对不起,我给你答案,没有任何解释:你犯的错误是给单元格的图像视图分配另一个图像视图,而不是仅仅设置已经存在的视图的图像。 这行得通。但是现在滚动表格时它的波动很大。如果您能找到任何优化滚动的方法,我将在问题中发布完整的代码。谢谢。 嗯,那是因为您在表格视图中使用 dataWithContentsOfURL。您最好单独询问(或自己查找),因为这是一个更大的问题。 您需要异步下载图像。至少有 3-4 种方法可以做到这一点,从使用 AFNetworking 之类的库到使用 NSQueue... 在此处添加问题:***.com/questions/8160223/…【参考方案2】:

尝试在您的 URL 字符串中添加百分比转义。

NSString *urlString = [[appointmentDictionaryTemp objectForKey:@"patient_small_photo_url"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

【讨论】:

不幸的是没有运气。链接是https,而不是http,如果有区别的话。 在发送-dataWithContentsOfURL 消息后设置断点并检查网络上的内容。也许这是在图像视图上设置图像的问题。你是如何设置你的手机的? patientImage 是否连接到 UIImageView?

以上是关于UIImageView 在 UITableViewCell 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用UITableView自动在UITableView上滚动UIImageView

如何在 UITableView 的单元格中为 UIImageView 获取 touchesMoved?

在具有透明度的 UITableView 单元格中更新 UIImageView

如何在 UITableView 的两个部分之间插入 UIImageView?

在 UITableView 中有一个带有圆角的 UIImageView 的确定方法?

在 UITableView 内的 UIImageView 中从 Web 加载图像