IOS 图像未在 ImageView 中设置

标签 ios uiimageview tablecell

我在我的两个 View Controller 中使用了相同的代码(它们实现了相同的类,只是它们下载的 url 发生了变化)并且在一个场合中图像显示正确,而在另一个场合中我确实看到一个空单元格。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier=@"MyCell";
    //this is the identifier of the custom cell
    MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    tableView.backgroundColor=[UIColor clearColor];
    tableView.opaque=NO;
    tableView.backgroundView=nil;

    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
    NSLog(@"Image url is:%@",[images_url objectAtIndex:indexPath.row]);
    NSURL *url_image=[NSURL URLWithString:[images_url objectAtIndex:indexPath.row]];

    cell.myimage.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:url_image]];


    return cell;
}

正如我告诉过你的,我有 2 个实现相同类的 View Controller 。在确实加载的 View 中,根据标志的值设置 url。如果我打开 Controller A,我看不到图像,如果我打开 View B,我可以看到图像。这两个 url 都是正确的,因为我可以用我插入的 NSLog 来检查它。

可能是什么问题?

最佳答案

不幸的是,调用“NSData dataWithContentsOfURL”是一个阻塞调用。程序的执行将停止,直到 iOS 能够从服务器获取所有数据或尝试失败。如果您使用 LTE 或 WiFi,这通常可能是“快速”的;但可能需要很长时间。

与此同时,您正处于应用程序的“主线程”上 - 因此您的应用程序似乎会卡住,系统的看门狗计时器可能会终止您的应用程序。如果除您之外的任何人都将使用此应用程序,您绝对需要使用立即检索的本地数据填充您的 tableview 单元格的图像或使用异步方法。

只需谷歌搜索“延迟加载 UIImage”。 This SO question有一些关于这个主题的好技巧: lazy-load-images-in-uitableview

此外,您应该将这些行移动到一些设置代码中。您不需要每次都执行它们来更新单元格:

tableView.backgroundColor=[UIColor clearColor];
tableView.opaque=NO;
tableView.backgroundView=nil;

祝你好运!

关于IOS 图像未在 ImageView 中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553746/

相关文章:

ios - 无法注册推送通知

ios - 我什么时候应该在区 block 中使用弱势 self ,为什么砌体中没有保留周期?

ios - 下载图像时的事件指示器 iOS

css - <td> 是否具有与其高度相同的行高?

swift - 如何快速在动态 TableView 中创建动态 tableView?

ios CoreBluetooth [警告] 未知错误 : 1309

ios - Objective C - 使用共享实例创建单例

iphone - 拍照并设置到iOS中的UIImageView

swift - SDWebImage 不工作

html - 如何使 2 个 div 内联,宽度取决于内容