我有一个表格视图,里面装满了json的数组。我还得到了用户的个人资料图片,并且必须在数组填充的msgs旁边加载。
我在这里有两个问题:
1>我是否需要先在主线程上填写tableview,然后在主线程填充的后台填充图像,或者上述过程是否有其他解决方案?
2 - ;我如何在msg所在的位置加载它,如果加载图像需要时间并且有人已经从tableview中删除了msg。将会查看该特定单元格中的对象,因此已加载的图像省略后台并继续。或者我是否需要在主线程上保留整个线程,直到msgs和图像都被加载?
请建议我哪个是您已经实施的最佳解决方案或解决方案。请将此问题视为tableview ios6架构中所有爱好者和初学者的询问。
请分享与上述问题ios6 storyboard架构相关的任何链接/数据。
先谢谢。
答案 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;
}