如何在uitableview之后在ios 6中加载tableview中的图像

时间:2013-03-22 16:26:20

标签: ios ios6 uiimageview tableview grand-central-dispatch

我有一个表格视图,里面装满了json的数组。我还得到了用户的个人资料图片,并且必须在数组填充的msgs旁边加载。

我在这里有两个问题:

1>我是否需要先在主线程上填写tableview,然后在主线程填充的后台填充图像,或者上述过程是否有其他解决方案?

2 - ;我如何在msg所在的位置加载它,如果加载图像需要时间并且有人已经从tableview中删除了msg。将会查看该特定单元格中的对象,因此已加载的图像省略后台并继续。或者我是否需要在主线程上保留整个线程,直到msgs和图像都被加载?

请建议我哪个是您已经实施的最佳解决方案或解决方案。请将此问题视为tableview ios6架构中所有爱好者和初学者的询问。

请分享与上述问题ios6 storyboard架构相关的任何链接/数据。

先谢谢。

1 个答案:

答案 0 :(得分:1)

  

1>我是否需要先在主线程上填充tableview,然后在背景中填充图像,该图像填充在主线程中   或者上述程序是否有其他解决方案?

所有UI更改必须在主线程上完成。但是下载图像(以及任何处理,如果你想绕过角落)应该在后台线程上完成。

  

2 - ;我如何将其加载到msg所在的位置,如果加载的话   图像需要时间,有人已经从中删除了消息   tableview .Will tableview知道那个特定单元格中的对象   已被删除,因此正在加载的图像   背景被省略并继续。或者我需要持有整个   主线程上的线程,直到msgs和图像都被加载?

表格视图反映了数据源中的内容。除了表格单元格之外,它不会跟踪任何内容。如果用户删除了邮件但图像尚未下载,则应取消该图像的下载。

对于图像下载,您可能需要查看SDWebImage库,它将为您完成大量此操作。它启用了“setImageWithURL”方法,您可以像这样使用它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}