使用后台获取在 UITableView 单元格中显示帖子
Show posts in UITableView Cell With Background fetch
我正在创建一个应用程序,我必须在其中显示包含照片和文本的用户帖子。我想要一种更好的方法来像 Facebook 那样在后台获取更新的帖子?滚动到顶部后,我想显示较新的帖子。
在 cellForRowAtIndexPath:
中安排图像和帖子在每个单元格的单独线程上下载,并在下载图像和帖子时用接收到的数据更新相应的单元格。
用于下载图片和帖子您可以使用延迟加载,也可以使用 GCD API 异步下载您的资源,因为-
// sample usage of GCD API
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.imageView.image = nil; // or cell.imageView.image = [UIImage imageNamed:@"placeholder.png"];
dispatch_async(kBgQueue, ^{
// download the image asynchronously as
NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://imageurl.com/%@.jpg",[[modal objectAtIndex:indexPath.row] objectForKey:@"imageId"]]]];
if (imgData) {
UIImage *image = [UIImage imageWithData:imgData];
if (image) {
// when the image is downloaded set it as
dispatch_async(dispatch_get_main_queue(), ^{
UITableViewCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath];
if (updateCell)
updateCell.imageView.image = image;
});
}
}
});
return cell;
}
注意:这是一个粗略的想法,您需要根据需要使用/实施相同的方法。
我正在创建一个应用程序,我必须在其中显示包含照片和文本的用户帖子。我想要一种更好的方法来像 Facebook 那样在后台获取更新的帖子?滚动到顶部后,我想显示较新的帖子。
在 cellForRowAtIndexPath:
中安排图像和帖子在每个单元格的单独线程上下载,并在下载图像和帖子时用接收到的数据更新相应的单元格。
用于下载图片和帖子您可以使用延迟加载,也可以使用 GCD API 异步下载您的资源,因为-
// sample usage of GCD API
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.imageView.image = nil; // or cell.imageView.image = [UIImage imageNamed:@"placeholder.png"];
dispatch_async(kBgQueue, ^{
// download the image asynchronously as
NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://imageurl.com/%@.jpg",[[modal objectAtIndex:indexPath.row] objectForKey:@"imageId"]]]];
if (imgData) {
UIImage *image = [UIImage imageWithData:imgData];
if (image) {
// when the image is downloaded set it as
dispatch_async(dispatch_get_main_queue(), ^{
UITableViewCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath];
if (updateCell)
updateCell.imageView.image = image;
});
}
}
});
return cell;
}
注意:这是一个粗略的想法,您需要根据需要使用/实施相同的方法。